• struts2 + spring3 + mybatis3 环境搭建


    struts2 + spring3 + mybatis3 

    1. 框架下载

    struts2: http://struts.apache.org/ 下载 struts-2.3.14-all.zip

    spring3: http://www.springsource.org/spring-framework 下载 spring-framework-3.2.2-dist.zip

    mybatis3: http://code.google.com/p/mybatis/ 下载 mybatis-3.2.2.zip 和 mybatis-spring-1.2.0-bundle.zip

    2. 建示例工程

    在Eclipse中新建示例工程,步骤就不详述了,我把工程取名为ssm_example。

    3. struts2配置

    3.1 src下创建struts.xml配置文件

     

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <!DOCTYPE struts PUBLIC  
    3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
    4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
    5.   
    6. <struts>  
    7.   
    8.     <constant name="struts.devMode" value="true" />  
    9.   
    10.     <package name="basic" extends="struts-default">  
    11.         <action name="index" class="cn.ssm.sample.action.IndexAction" method="execute">  
    12.             <result name="success">/WEB-INF/jsp/Index.jsp</result>  
    13.         </action>  
    14.     </package>  
    15.   
    16. </struts>  
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
    
    <struts>
    
    	<constant name="struts.devMode" value="true" />
    
    	<package name="basic" extends="struts-default">
    		<action name="index" class="cn.ssm.sample.action.IndexAction" method="execute">
    			<result name="success">/WEB-INF/jsp/Index.jsp</result>
    		</action>
    	</package>
    
    </struts>

    3.2 修改web.xml

     

    1. <filter>  
    2.         <filter-name>struts2</filter-name>  
    3.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
    4.     </filter>  
    5.   
    6.     <filter-mapping>  
    7.         <filter-name>struts2</filter-name>  
    8.         <url-pattern>/*</url-pattern>  
    9.     </filter-mapping>  
    <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>

    3.3 从解压的struts-2.3.14-all的lib文件夹下,挑选了必须的和比较常用的jar包,放入WEB-INF/lib的文件夹下

     

    1. commons-fileupload-1.2.2.jar  
    2. commons-io-2.0.1.jar  
    3. commons-lang-2.4.jar  
    4. commons-lang3-3.1.jar  
    5. commons-logging-1.1.1.jar  
    6. commons-logging-api-1.1.jar  
    7. freemarker-2.3.19.jar  
    8. javassist-3.11.0.GA.jar  
    9. ognl-3.0.6.jar  
    10. struts2-core-2.3.14.jar  
    11. xwork-core-2.3.14.jar  
    commons-fileupload-1.2.2.jar
    commons-io-2.0.1.jar
    commons-lang-2.4.jar
    commons-lang3-3.1.jar
    commons-logging-1.1.1.jar
    commons-logging-api-1.1.jar
    freemarker-2.3.19.jar
    javassist-3.11.0.GA.jar
    ognl-3.0.6.jar
    struts2-core-2.3.14.jar
    xwork-core-2.3.14.jar

    3.4 建个测试用的IndexAction.java和Index.jsp

     

    1. package cn.ssm.sample.action;  
    2.   
    3. import com.opensymphony.xwork2.ActionSupport;  
    4.   
    5. public class IndexAction extends ActionSupport{  
    6.   
    7.     @Override  
    8.     public String execute() throws Exception {  
    9.         // TODO Auto-generated method stub   
    10.         return super.execute();  
    11.     }  
    12.   
    13. }  
    package cn.ssm.sample.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class IndexAction extends ActionSupport{
    
    	@Override
    	public String execute() throws Exception {
    		// TODO Auto-generated method stub
    		return super.execute();
    	}
    
    }

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
    2.     pageEncoding="UTF-8"%>  
    3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    4. <html>  
    5. <head>  
    6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
    7. <title>Insert title here</title>  
    8. </head>  
    9. <body>  
    10.     Hello world!  
    11. </body>  
    12. </html>  
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	Hello world!
    </body>
    </html>

    3.5 测试struts2

    运行服务,在浏览器输入http://localhost:8080/ssm_example/index,如果配置没有错误,那么会出现Hello world!

    4. spring3配置

    4.1 config/spring下创建applicationContext.xml配置文件

     

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2.   
    3. <beans xmlns="http://www.springframework.org/schema/beans"  
    4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"  
    5.     xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
    6.     xmlns:context="http://www.springframework.org/schema/context"  
    7.     xsi:schemaLocation="  
    8.      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
    9.      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
    10.      http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd  
    11.      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
    12.      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">  
    13.   
    14.     <!-- enable component scanning (beware that this does not enable mapper   
    15.         scanning!) -->  
    16.     <context:component-scan  
    17.         base-package="cn.ssm.sample.action,cn.ssm.sample.service" />  
    18.   
    19.     <!-- enable autowire -->  
    20.     <context:annotation-config />  
    21.   
    22.     <!-- enable transaction demarcation with annotations -->  
    23.     <tx:annotation-driven />  
    24.       
    25. </beans>  
    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xsi:schemaLocation="
         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
         http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
    
    	<!-- enable component scanning (beware that this does not enable mapper 
    		scanning!) -->
    	<context:component-scan
    		base-package="cn.ssm.sample.action,cn.ssm.sample.service" />
    
    	<!-- enable autowire -->
    	<context:annotation-config />
    
    	<!-- enable transaction demarcation with annotations -->
    	<tx:annotation-driven />
    	
    </beans>
    

    4.2 修改web.xml

     

    1. <listener>  
    2.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    3. </listener>  
    4. <context-param>  
    5.     <param-name>contextConfigLocation</param-name>  
    6.     <param-value>/WEB-INF/classes/applicationContext.xml  
    7.        </param-value>  
    8. </context-param>  
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>/WEB-INF/classes/applicationContext.xml
            </param-value>
    	</context-param>

    4.3 添加相关jar包

     

    1. aopalliance-1.0.jar  
    2. spring-aop-3.2.2.RELEASE.jar  
    3. spring-beans-3.2.2.RELEASE.jar  
    4. spring-context-3.2.2.RELEASE.jar  
    5. spring-core-3.2.2.RELEASE.jar  
    6. spring-expression-3.2.2.RELEASE.jar  
    7. spring-jdbc-3.2.2.RELEASE.jar  
    8. spring-tx-3.2.2.RELEASE.jar  
    9. spring-web-3.2.2.RELEASE.jar  
    10. struts2-spring-plugin-2.3.14.jar  
    aopalliance-1.0.jar
    spring-aop-3.2.2.RELEASE.jar
    spring-beans-3.2.2.RELEASE.jar
    spring-context-3.2.2.RELEASE.jar
    spring-core-3.2.2.RELEASE.jar
    spring-expression-3.2.2.RELEASE.jar
    spring-jdbc-3.2.2.RELEASE.jar
    spring-tx-3.2.2.RELEASE.jar
    spring-web-3.2.2.RELEASE.jar
    struts2-spring-plugin-2.3.14.jar

    4.4 修改struts.xml文件

    添加:<constant name="struts.objectFactory" value="spring"></constant>

    并且把class="cn.ssm.sample.action.IndexAction"改成class="indexAction" 

    4.5 修改Action

    在IndexAction的类上,加上@Controller,这样Spring就能自动实例化成indexAction对象了。

    4.6 测试spring

    运行服务,在浏览器输入http://localhost:8080/ssm_example/index,如果配置没有错误,那么依然会出现Hello world!

    5. mybatis3配置

    5.1 数据库准备

    这里采用mysql,下面的sql文来运行。

     

    1. CREATE SCHEMA `ssmsample` DEFAULT CHARACTER SET utf8 ;  
    2. CREATE  TABLE `ssmsample`.`user` (`id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(45) NULL, PRIMARY KEY('id') );  
    3. INSERT INTO `ssmsample`.`user` (`id`,`name`) VALUES (1,'Ethan');  
    CREATE SCHEMA `ssmsample` DEFAULT CHARACTER SET utf8 ;
    CREATE  TABLE `ssmsample`.`user` (`id` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(45) NULL, PRIMARY KEY('id') );
    INSERT INTO `ssmsample`.`user` (`id`,`name`) VALUES (1,'Ethan');

    5.2 修改applicationContext.xml

     

    1. <!-- 数据源配置 -->  
    2. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
    3.     destroy-method="close">  
    4.     <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>  
    5.     <property name="url"  
    6.         value="jdbc:mysql://localhost:3306/ssmsample?useUnicode=true&characterEncoding=utf8"></property>  
    7.     <property name="username" value="root"></property>  
    8.     <property name="password" value="admin"></property>  
    9. </bean>  
    10.   
    11. <!-- transaction manager, use JtaTransactionManager for global tx -->  
    12. <bean id="transactionManager"  
    13.     class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
    14.     <property name="dataSource" ref="dataSource" />  
    15. </bean>  
    16.   
    17.    <!-- define the SqlSessionFactory -->  
    18.    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
    19.        <property name="dataSource" ref="dataSource" />  
    20.        <property name="typeAliasesPackage" value="cn.ssm.sample.dto" />  
    21.    </bean>  
    22.   
    23.    <!-- scan for mappers and let them be autowired -->  
    24.    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
    25.        <property name="basePackage" value="cn.ssm.sample.dao" />  
    26.    </bean>  
    	<!-- 数据源配置 -->
    	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    		destroy-method="close">
    		<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    		<property name="url"
    			value="jdbc:mysql://localhost:3306/ssmsample?useUnicode=true&characterEncoding=utf8"></property>
    		<property name="username" value="root"></property>
    		<property name="password" value="admin"></property>
    	</bean>
    
    	<!-- transaction manager, use JtaTransactionManager for global tx -->
    	<bean id="transactionManager"
    		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    		<property name="dataSource" ref="dataSource" />
    	</bean>
    
        <!-- define the SqlSessionFactory -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
            <property name="typeAliasesPackage" value="cn.ssm.sample.dto" />
        </bean>
    
        <!-- scan for mappers and let them be autowired -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="cn.ssm.sample.dao" />
        </bean>

    5.3 创建和修改相关类

    UserMapper.java

     

    1. package cn.ssm.sample.dao;  
    2.   
    3. import cn.ssm.sample.dto.User;  
    4.   
    5. public interface UserMapper {  
    6.     User getUser(int id);  
    7. }  
    package cn.ssm.sample.dao;
    
    import cn.ssm.sample.dto.User;
    
    public interface UserMapper {
    	User getUser(int id);
    }

    UserMapper.xml(和UserMapper.java同目录)

     

    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"   
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
    4.   
    5. <mapper namespace="cn.ssm.sample.dao.UserMapper">  
    6.     <select id="getUser" parameterType="int" resultType="User">  
    7.         SELECT *  
    8.         From user where id = #{id}  
    9.     </select>  
    10. </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="cn.ssm.sample.dao.UserMapper">
    	<select id="getUser" parameterType="int" resultType="User">
    		SELECT *
    		From user where id = #{id}
    	</select>
    </mapper>

    User.java

     

    1. package cn.ssm.sample.dto;  
    2.   
    3. public class User {  
    4.     int id;  
    5.     String name;  
    6.   
    7.     public int getId() {  
    8.         return id;  
    9.     }  
    10.   
    11.     public void setId(int id) {  
    12.         this.id = id;  
    13.     }  
    14.   
    15.     public String getName() {  
    16.         return name;  
    17.     }  
    18.   
    19.     public void setName(String name) {  
    20.         this.name = name;  
    21.     }  
    22. }  
    package cn.ssm.sample.dto;
    
    public class User {
    	int id;
    	String name;
    
    	public int getId() {
    		return id;
    	}
    
    	public void setId(int id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    }
    

    IndexSvr.java

     

    1. package cn.ssm.sample.service;  
    2.   
    3. import org.springframework.beans.factory.annotation.Autowired;  
    4. import org.springframework.stereotype.Service;  
    5.   
    6. import cn.ssm.sample.dao.UserMapper;  
    7. import cn.ssm.sample.dto.User;  
    8.   
    9. @Service  
    10. public class IndexSvr {  
    11.       
    12.     @Autowired  
    13.     UserMapper userMapper;  
    14.       
    15.     public User getUser(int id) {  
    16.         return userMapper.getUser(id);  
    17.     }  
    18. }  
    package cn.ssm.sample.service;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import cn.ssm.sample.dao.UserMapper;
    import cn.ssm.sample.dto.User;
    
    @Service
    public class IndexSvr {
    	
    	@Autowired
    	UserMapper userMapper;
    	
    	public User getUser(int id) {
    		return userMapper.getUser(id);
    	}
    }
    

    IndexAction.java

     

    1. package cn.ssm.sample.action;  
    2.   
    3. import org.springframework.beans.factory.annotation.Autowired;  
    4. import org.springframework.stereotype.Controller;  
    5.   
    6. import cn.ssm.sample.dto.User;  
    7. import cn.ssm.sample.service.IndexSvr;  
    8.   
    9. import com.opensymphony.xwork2.ActionSupport;  
    10.   
    11. @Controller  
    12. public class IndexAction extends ActionSupport{  
    13.   
    14.     private User user;  
    15.       
    16.     public User getUser() {  
    17.         return user;  
    18.     }  
    19.   
    20.     public void setUser(User user) {  
    21.         this.user = user;  
    22.     }  
    23.   
    24.     @Autowired  
    25.     IndexSvr indexSvr;  
    26.   
    27.     @Override  
    28.     public String execute() throws Exception {  
    29.         user = indexSvr.getUser(1);  
    30.         return super.execute();  
    31.     }  
    32.   
    33. }  
    package cn.ssm.sample.action;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    
    import cn.ssm.sample.dto.User;
    import cn.ssm.sample.service.IndexSvr;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    @Controller
    public class IndexAction extends ActionSupport{
    
    	private User user;
    	
    	public User getUser() {
    		return user;
    	}
    
    	public void setUser(User user) {
    		this.user = user;
    	}
    
    	@Autowired
    	IndexSvr indexSvr;
    
    	@Override
    	public String execute() throws Exception {
    		user = indexSvr.getUser(1);
    		return super.execute();
    	}
    
    }
    

    index.jsp

     

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
    2.     pageEncoding="UTF-8"%>  
    3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
    4. <html>  
    5. <head>  
    6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
    7. <title>Insert title here</title>  
    8. </head>  
    9. <body>  
    10.     Hello world! ${user.name }  
    11. </body>  
    12. </html>  
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	Hello world! ${user.name }
    </body>
    </html>

    5.4 添加jar包

     

    1. commons-dbcp-1.4.jar  
    2. commons-pool-1.6.jar  
    3. mybatis-3.2.2.jar  
    4. mybatis-spring-1.2.0.jar  
    5. mysql-connector-java-5.1.13-bin.jar  
    commons-dbcp-1.4.jar
    commons-pool-1.6.jar
    mybatis-3.2.2.jar
    mybatis-spring-1.2.0.jar
    mysql-connector-java-5.1.13-bin.jar

    5.5 测试ssm

    运行服务,在浏览器输入http://localhost:8080/ssm_example/index,如果配置没有错误,那么依然会出现Hello world!Ethan

  • 相关阅读:
    [Python] wxPython 高防Windows10记事本 (end...)
    C++模板学习:函数模板、结构体模板、类模板
    【English】十六、时间相关
    【English】十五、“a”和“one”的区别是什么?
    【English】十四、英语
    【English】十三、英语中的连词有哪些,都有什么作用
    【English】十二、英语句子种类,陈述句、疑问句、祈使句、感叹句
    【English】十一、一般疑问句
    【English】十、"谓语的地方"看到有两个动词:I go say hello.、非谓语形式
    【English】九、kids/children/toddlers 三个单词的区别
  • 原文地址:https://www.cnblogs.com/shijiaoyun/p/4221926.html
Copyright © 2020-2023  润新知