整合spring_struts2_mybatis

来源:互联网 发布:电影票房数据库 编辑:程序博客网 时间:2024/05/21 04:41
1.确定需求(明确要拥有的功能)
2.三层结构
     表示层:用户操作界面(如果想访问数据库,要交给业务逻辑层)
     业务逻辑层:负责关键业务处理和数据传递
     数据访问层:实现数据库访问(封装对数据库的访问 data access object——dao)
3.设计原则
     各层提供相应的接口,实现分离,对该类访问只能通过接口进行。
     底层不能依赖高层的功能,避免结构的复杂。(依赖spring框架)
     数据流是双向交换的。

1.当用到哪一个数据的时候,建立相应的数据库
     三层结构:web<-service<-dao<-entity
2.配置mybatis
     2.1 配置mybatis-config.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--properties  settings typeAliases typeHandlers objectfactory mappers
        配置的时候要按照这个顺序来配置-->
    <!--类型别名的配置-->
    <typeAliases>
        <package name="com.never.higou.entity"></package>
    </typeAliases>
    <!--映射文件的配置-->
    <mappers>
        <mapper resource="com/never/higou/dao/mapper/UserMapper.xml"/>
    </mappers>
</configuration>
     2.2 配置DAO层的实现文件(mapper)
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.never.higou.dao.UserDAO">

    <resultMap id="UserResult" type="User">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="password" column="password"/>
        <result property="phoneNum" column="phoneNum"/>
        <result property="money" column="money"/>
        <result property="avatar" column="avatar"/>
        <result property="regTime" column="regTime"/>
        <result property="role" column="role"/>
    </resultMap>

    <!--id与userDAO中的方法对应-->
    <insert id="addUser" parameterType="User">
        insert into shop_user values(#{id},#{name},#{password},#{phoneNum},#{money},
        #{avatar,jdbcType=varchar},#{regTime},#{role})
    </insert>
</mapper>
     2.3配置数据库连接信息,不过因为是整合spring一起使用,所以把数据库的配置放到spring中
3.配置spring,在运行的时候进行注入,编写的时候我们不用注意具体的实现,都交由bean实现
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="
      http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--配置数据源-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <!--配置数据库-->
        <property name="driverClassName" value="org.apache.commons.dbcp.BasicDataSource"/>
        <property name="url" value="jdbc:mysql://localhost:3306/higou?useUnicode=true&amp;characterEncoding=UTF-8"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </bean>

    <!--让mybatis配置文件由spring来管理-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>

    <!--mybatis 对应的mappers-->
    <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="mapperInterface" value="com.never.higou.dao.UserDAO"/>
        <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    </bean>

    <!--配置一个具体的实现-->
    <bean id="userService" class="com.never.higou.service.impl.UserServiceImpl">
        <property name="userDao" ref="userMapper"/>
    </bean>

    <!--配置 action-->
    <bean name="userAction" class="com.never.higou.web.UserAction" scope="prototype">
        <property name="userService" ref="userService"/>
    </bean>
</beans>
4.配置struts2,Struts是controller层,实现业务逻辑
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apach.Software Fundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <!--将action的实例化交给spring处理-->
    <constant name="struts.objectFactory" value="spring"/>
    <package name="higou" extends="struts-default">
        <!--应用动态方法调用来配置action-->
        <!--userAction  定义在spring中-->
        <!--指定方法  method 是struts中提供的动态方法调用的语法-->
        <action name="user_*" class="userAction" method="{1}">
            <result name="regSuc">/login.jsp</result>
        </action>

    </package>
</struts>
5.在web.xml中配置struts2的过滤器和Spring的ContextLoadListener(全局配置)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  id="WebApp_ID" version="3.1">
  <!--在项目启动的时候就会执行-->
  <servlet>
      <servlet-name>init</servlet-name>
      <servlet-class>com.never.higou.web.InitServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
  </servlet>

  <!--配置过滤器-->
  <filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

  <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
</web-app>
6.配置log4j.properties,日志文件(用于输出后台详细信息)




0 0