第十讲 整合Struts2和MyBatis

来源:互联网 发布:java移动端服务端 编辑:程序博客网 时间:2024/06/05 15:13
一、导入jar包

           <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>jstl</artifactId>
                <version>1.2</version>
           </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.0.1</version>
                <scope>provided</scope>
           </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>4.2.1.RELEASE</version>
           </dependency>
           <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>1.8.10</version>
           </dependency>
           <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-core</artifactId>
                <version>2.5.8</version>
           </dependency>
           <dependency>
                <groupId>org.apache.struts.xwork</groupId>
                <artifactId>xwork-core</artifactId>
                <version>2.3.31</version>
           </dependency>
           <dependency>
                <groupId>org.apache.struts</groupId>
                <artifactId>struts2-spring-plugin</artifactId>
                <version>2.5.8</version>
           </dependency>
           <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
           </dependency>
           <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.1</version>
           </dependency>
           <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis-spring</artifactId>
                <version>1.3.1</version>
           </dependency>
           <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>4.2.1.RELEASE</version>
           </dependency>
           <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>4.3.7.RELEASE</version>
           </dependency>
           <dependency>
                <groupId>org.javassist</groupId>
                <artifactId>javassist</artifactId>
                <version>3.20.0-GA</version>
           </dependency>
           <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>1.7.21</version>
           </dependency>
           <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.7.21</version>
           </dependency>
           <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.7</version>
           </dependency>
           <dependency>
                <groupId>cglib</groupId>
                <artifactId>cglib</artifactId>
                <version>3.2.5</version>
           </dependency>
           <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>4.3.8.RELEASE</version>
           </dependency>
           <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-orm</artifactId>
                <version>4.3.8.RELEASE</version>
           </dependency>
           <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.1</version>
           </dependency>
           <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>2.3.23</version>
           </dependency>

二、web.xml配置文件

<?xmlversion="1.0"encoding="UTF-8"?>
<web-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://java.sun.com/xml/ns/javaee"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     version="2.5">
     <display-name>spring_struts2_mybatis</display-name>
     <welcome-file-list>
           <welcome-file>index.html</welcome-file>
     </welcome-file-list>

     <!-- 配置spring -->
     <context-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath:applicationContext.xml</param-value>
     </context-param>
     <!-- 当服务器容器启动的时候,会自动读取contextConfigLocation,也就是beans.xml -->
     <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>

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

</web-app>

三、mybatis配置文件(mybatis-config.xml)

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEconfigurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

     <typeAliases>
           <packagename="com.liujie.model"/>
     </typeAliases>
     
     <mappers>
           <mapperresource="com/liujie/model/user.mapper.xml"/>
     </mappers>

</configuration>

四、编码


     UserDao接口:

publicinterfaceUserDao {
     
     publicList<User> getAll();
     
}

     UseDaoImpl实现:

publicclassUserDaoImpl extendsSqlSessionDaoSupportimplementsUserDao {
     publicList<User> getAll() {
           returnthis.getSqlSession().selectList("com.liujie.model.UserMapper.getAll");
     }
}

     UserDaoService接口:

publicinterfaceUserService {
     publicList<User> getAll();
     
}

     UserServiceDaoImpl实现:

publicclassUserServiceImpl implementsUserService {
     privateUserDaouserDao;
     
     publicvoidsetUserDao(UserDao userDao) {
           this.userDao=userDao;
     }
     
     publicList<User> getAll() {
           returnuserDao.getAll();
     }
}

     UserAction:

publicclassUserAction {
     privateList<User>list;
     privateUserServiceuserService;
     
     publicvoidsetUserService(UserService userService) {
           this.userService=userService;
     }
     
     publicList<User> getList() {
           returnlist;
     }
     
     publicvoidsetList(List<User> list) {
           this.list=list;
     }
     
     publicString list() {
           list=userService.getAll();
           return"success";
     }
     
}

     spring配置文件:
 
          applicationContext.xml:

<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:tx="http://www.springframework.org/schema/tx"
     xmlns:aop="http://www.springframework.org/schema/aop"
     xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans.xsd
     http://www.springframework.org/schema/tx
     http://www.springframework.org/schema/tx/spring-tx.xsd
     http://www.springframework.org/schema/aop
     http://www.springframework.org/schema/aop/spring-aop.xsd">
     <!-- 配置数据源 -->
     <beanid="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
           <propertyname="driverClassName"value="com.mysql.jdbc.Driver"></property>
           <propertyname="url"value="jdbc:mysql://localhost:3306/test"></property>
           <propertyname="username"value="root"></property>
           <propertyname="password"value="123456"></property>
     </bean>
     <!-- 声明式事务配置 -->
     <!-- 配置事务管理器 -->
     <beanid="txManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
           <propertyname="dataSource"ref="dataSource"/>
     </bean>
     <!-- 配置事务通知 -->
     <tx:adviceid="txAdvice"transaction-manager="txManager">
           <tx:attributes>
                <!-- 配置哪些方法使用什么样的事务,配置事务的传播特性 -->
                <tx:methodname="add"propagation="REQUIRED"/>
                <tx:methodname="insert"propagation="REQUIRED"/>
                <tx:methodname="update"propagation="REQUIRED"/>
                <tx:methodname="delete"propagation="REQUIRED"/>
                <tx:methodname="remove*"propagation="REQUIRED"/>
                <tx:methodname="get"read-only="true"/>
                <tx:methodname="*"propagation="REQUIRED"/>
           </tx:attributes>
     </tx:advice>
     <aop:config>
           <!-- 切入点应该是service.impl下的所有类的所有方法,这里为了方便测试所以直接用了dao.impl -->
           <aop:pointcutexpression="execution(* com.liujie.dao.impl.*.*(..))"
                id="pointcut"/>
           <aop:advisoradvice-ref="txAdvice"pointcut-ref="pointcut"/>
     </aop:config>
     <!-- 声明式事务配置结束 -->
     <!-- 配置sqlSessionFactory -->
     <beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">
           <propertyname="dataSource"ref="dataSource"></property>
           <propertyname="configLocation"value="classpath:mybatis-config.xml"></property>
     </bean>
     <importresource="config/spring/user.xml"/>
</beans>

          user.xml:

<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:aop="http://www.springframework.org/schema/aop"
     xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans.xsd
     http://www.springframework.org/schema/aop
     http://www.springframework.org/schema/aop/spring-aop.xsd">
     
     <beanid="userDao"class="com.liujie.dao.impl.UserDaoImpl">
           <propertyname="sqlSessionFactory"ref="sqlSessionFactory"></property>
     </bean>
     
     <beanid="userService"class="com.liujie.service.impl.UserServiceImpl">
           <propertyname="userDao"ref="userDao"></property>
     </bean>
     
     <beanid="userAction"class="com.liujie.action.UserAction"scope="prototype">
           <propertyname="userService"ref="userService"></property>
     </bean>
     
</beans>

     struts配置文件:

          struts.xml:

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEstrutsPUBLIC
     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
  <includefile="config/struts/user.xml"></include>
</struts>

          user.xml:

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEstrutsPUBLIC
     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
  <packagename="user"namespace="/"extends="struts-default">
     <actionname="list"class="userAction"method="list">
           <result>/list.jsp</result>
     </action>
  </package>
</struts>


     mybatis配置文件:

          mybatis-config.xml:

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEconfigurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
     <typeAliases>
           <packagename="com.liujie.model"/>
     </typeAliases>
     
     <mappers>
           <mapperresource="config/mybatis/user.mapper.xml"/>
     </mappers>
</configuration>

          user.mapper.xml:

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEmapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mappernamespace="com.liujie.model.UserMapper">
     <selectid="getAll"resultType="User">
           select * from user
     </select>
     
</mapper>

     list.jsp页面:

<%@pagelanguage="java"contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPEhtmlPUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
     <tablewidth="80%"align="center">
           <tr>
                <td>编号</td>
                <td>姓名</td>
                <td>密码</td>
           </tr>
           <c:forEachitems="${list}"var="user">
           <tr>
                <td>${user.id}</td>
                <td>${user.name}</td>
                <td>${user.pwd}</td>
           </tr>
           </c:forEach>
     </table>
</body>
</html>