关于spring+springMVC+myBatis的一些基础配置以及整合
SSM框架的简单搭建
1.首先建立一个maven-web项目
2.pom文件配置
首先你要有自己的仓库,本人搭建SSM所用到的仓库:
百度云盘:
下面给大家展示我自己配置的pom文件
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>com.iflytek.extjs</groupId> 5 <artifactId>extjs</artifactId> 6 <packaging>war</packaging> 7 <version>0.0.1-SNAPSHOT</version> 8 <name>extjs Maven Webapp</name> 9 <url>http://maven.apache.org</url> 10 11 <properties> 12 <!-- 版本定义 --> 13 <org.springframework-version>3.1.0.RELEASE</org.springframework-version> 14 <org.slf4j-version>1.5.6</org.slf4j-version> 15 <mybatis.version>3.1.1</mybatis.version> 16 <org.aspectj-version>1.6.10</org.aspectj-version> 17 <iframework.version>1.0.0-SNAPSHOT</iframework.version> 18 </properties> 19 20 <dependencies> 21 <!-- 开发测试 --> 22 <dependency> 23 <groupId>junit</groupId> 24 <artifactId>junit</artifactId> 25 <version>3.8.1</version> 26 <scope>test</scope> 27 </dependency> 28 <!-- Spring --> 29 <dependency> 30 <groupId>org.springframework</groupId> 31 <artifactId>spring-tx</artifactId> 32 <version>${org.springframework-version}</version> 33 <exclusions> 34 <!-- Exclude Commons Logging in favor of SLF4j --> 35 <exclusion> 36 <groupId>commons-logging</groupId> 37 <artifactId>commons-logging</artifactId> 38 </exclusion> 39 </exclusions> 40 </dependency> 41 <dependency> 42 <groupId>org.springframework</groupId> 43 <artifactId>spring-webmvc</artifactId> 44 <version>${org.springframework-version}</version> 45 <exclusions> 46 <!-- Exclude Commons Logging in favor of SLF4j --> 47 <exclusion> 48 <groupId>commons-logging</groupId> 49 <artifactId>commons-logging</artifactId> 50 </exclusion> 51 </exclusions> 52 </dependency> 53 <dependency> 54 <groupId>org.springframework</groupId> 55 <artifactId>spring-context</artifactId> 56 <version>${org.springframework-version}</version> 57 <exclusions> 58 <!-- Exclude Commons Logging in favor of SLF4j --> 59 <exclusion> 60 <groupId>commons-logging</groupId> 61 <artifactId>commons-logging</artifactId> 62 </exclusion> 63 </exclusions> 64 </dependency> 65 <!-- Logging --> 66 <dependency> 67 <groupId>org.slf4j</groupId> 68 <artifactId>slf4j-api</artifactId> 69 <version>${org.slf4j-version}</version> 70 </dependency> 71 <dependency> 72 <groupId>org.slf4j</groupId> 73 <artifactId>jcl-over-slf4j</artifactId> 74 <version>${org.slf4j-version}</version> 75 <scope>runtime</scope> 76 </dependency> 77 <dependency> 78 <groupId>org.slf4j</groupId> 79 <artifactId>slf4j-log4j12</artifactId> 80 <version>${org.slf4j-version}</version> 81 <scope>runtime</scope> 82 </dependency> 83 <dependency> 84 <groupId>log4j</groupId> 85 <artifactId>log4j</artifactId> 86 <version>1.2.16</version> 87 </dependency> 88 <!-- mybatis --> 89 <dependency> 90 <groupId>org.mybatis</groupId> 91 <artifactId>mybatis</artifactId> 92 <version>${mybatis.version}</version> 93 </dependency> 94 <!-- mybatis/spring包 --> 95 <dependency> 96 <groupId>org.mybatis</groupId> 97 <artifactId>mybatis-spring</artifactId> 98 <version>1.1.0</version> 99 </dependency> 100 <!-- Servlet --> 101 <dependency> 102 <groupId>javax.servlet</groupId> 103 <artifactId>servlet-api</artifactId> 104 <version>2.5</version> 105 <scope>provided</scope> 106 </dependency> 107 <dependency> 108 <groupId>javax.servlet.jsp</groupId> 109 <artifactId>jsp-api</artifactId> 110 <version>2.1</version> 111 <scope>provided</scope> 112 </dependency> 113 <dependency> 114 <groupId>javax.servlet.jsp.jstl</groupId> 115 <artifactId>jstl-api</artifactId> 116 <version>1.2</version> 117 </dependency> 118 <dependency> 119 <groupId>org.glassfish.web</groupId> 120 <artifactId>jstl-impl</artifactId> 121 <version>1.2</version> 122 </dependency> 123 <!-- Database --> 124 <dependency> 125 <groupId>mysql</groupId> 126 <artifactId>mysql-connector-java</artifactId> 127 <version>5.1.13</version> 128 </dependency> 129 <dependency> 130 <groupId>commons-dbcp</groupId> 131 <artifactId>commons-dbcp</artifactId> 132 <version>1.2.2</version> 133 </dependency> 134 <dependency> 135 <groupId>cglib</groupId> 136 <artifactId>cglib</artifactId> 137 <version>2.2</version> 138 </dependency> 139 <dependency> 140 <groupId>org.freemarker</groupId> 141 <artifactId>freemarker</artifactId> 142 <version>2.3.23</version> 143 </dependency> 144 <!-- aspectjweaver --> 145 <dependency> 146 <groupId>org.aspectj</groupId> 147 <artifactId>aspectjweaver</artifactId> 148 <version>1.8.4</version> 149 </dependency> 150 </dependencies> 151 <build> 152 <finalName>extjs</finalName> 153 <resources> 154 <resource> 155 <directory>src/main/resources</directory> 156 <includes> 157 <include>**/*.xml</include> 158 <include>**/*.properties</include> 159 <include>**/*.jsp</include> 160 </includes> 161 <filtering>true</filtering> 162 </resource> 163 </resources> 164 <plugins> 165 <plugin> 166 <groupId>org.mortbay.jetty</groupId> 167 <artifactId>maven-jetty-plugin</artifactId> 168 <version>6.1.2</version> 169 <configuration> 170 <contextPath>/extjs</contextPath> 171 <connectors> 172 <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> 173 <port>8280</port> 174 </connector> 175 </connectors> 176 <scanIntervalSeconds>10</scanIntervalSeconds> 177 </configuration> 178 </plugin> 179 </plugins> 180 </build> 181 </project>
3.配置web.xml文件
如下所示:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <!-- 首页展示 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 设置session过期的时间 --> <session-config> <session-timeout>20</session-timeout> </session-config> <!-- 配置Spring --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 防止Spring内存溢出监听器 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- 将所有*.do的请求交给springMVC的DispatcherServlet来处理 --> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!--设置字符编码,将所有的字符编码同意设置为utf-8 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
4.接下来配置spring文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans 7 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 8 http://www.springframework.org/schema/mvc 9 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 10 http://www.springframework.org/schema/context 11 http://www.springframework.org/schema/context/spring-context-3.0.xsd 12 http://www.springframework.org/schema/aop 13 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 14 http://www.springframework.org/schema/tx 15 http://www.springframework.org/schema/tx/spring-tx-3.0.xsd "> 16 <!-- 扫描service --> 17 <context:component-scan base-package="com.iflytek.extjs.service.serviceImpl" /> 18 <!-- 分解配置 jdbc.properites --> 19 <context:property-placeholder location="classpath:spring/jdbc.properties" ignore-unresolvable="true"/> 20 21 <!-- 数据库配置信息 --> 22 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 23 <property name="driverClassName" value="${jdbc.driver}"/> 24 <property name="url" value="${jdbc.url}"/> 25 <property name="username" value="${jdbc.username}"/> 26 <property name="password" value="${jdbc.password}"/> 27 <property name="validationQuery" value="${jdbc.validation.query}"/> 28 <property name="testWhileIdle" value="true"/> 29 <property name="timeBetweenEvictionRunsMillis" value="3600000"/> 30 <property name="minEvictableIdleTimeMillis" value="1800000"/> 31 <property name="testOnBorrow" value="true"/> 32 </bean> 33 <!-- sessionFactory 将spring和mybatis整合 --> 34 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 35 <property name="dataSource" ref="dataSource" /> 36 <property name="configLocation" value="classpath:spring/spring-mybatis.xml" /> 37 <property name="mapperLocations" value="classpath:mapping/*.xml" /> 38 </bean> 39 <!-- 自动扫描 将Mapper接口生成代理注入到Spring--> 40 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" autowire="byName"> 41 <property name="basePackage" value="com.iflytek.extjs.dao" /> 42 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> 43 </bean> 44 <!-- 配置事物 (事务管理)transaction manager, use JtaTransactionManager for global tx --> 45 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 46 <property name="dataSource" ref="dataSource" /> 47 </bean> 48 49 <tx:advice id="transactionAdvice" transaction-manager="transactionManager"> 50 <tx:attributes> 51 <tx:method name="add*" propagation="REQUIRED" /> 52 <tx:method name="append*" propagation="REQUIRED" /> 53 <tx:method name="insert*" propagation="REQUIRED" /> 54 <tx:method name="save*" propagation="REQUIRED" /> 55 <tx:method name="update*" propagation="REQUIRED" /> 56 <tx:method name="modify*" propagation="REQUIRED" /> 57 <tx:method name="edit*" propagation="REQUIRED" /> 58 <tx:method name="delete*" propagation="REQUIRED" /> 59 <tx:method name="remove*" propagation="REQUIRED" /> 60 <tx:method name="repair" propagation="REQUIRED" /> 61 <tx:method name="delAndRepair" propagation="REQUIRED" /> 62 63 <tx:method name="get*" propagation="SUPPORTS" /> 64 <tx:method name="find*" propagation="SUPPORTS" /> 65 <tx:method name="load*" propagation="SUPPORTS" /> 66 <tx:method name="search*" propagation="SUPPORTS" /> 67 <tx:method name="datagrid*" propagation="SUPPORTS" /> 68 69 <tx:method name="*" propagation="SUPPORTS" /> 70 </tx:attributes> 71 </tx:advice> 72 73 <!-- 定义一个切面,在定义的切面上加入事物 --> 74 <aop:config> 75 <aop:pointcut id="transactionPointcut" expression="execution(* com.iflytek.extjs.service..*Impl.*(..))" /> 76 <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" /> 77 </aop:config> 78 </beans>
5.配置spring-MVC文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" 6 xsi:schemaLocation=" 7 http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 9 http://www.springframework.org/schema/context 10 http://www.springframework.org/schema/context/spring-context-3.0.xsd 11 http://www.springframework.org/schema/mvc 12 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 13 <!-- 默认的注解映射的支持 --> 14 <mvc:annotation-driven /> 15 16 <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --> 17 <context:component-scan base-package="com.iflytek.extjs.controller" /> 18 19 <!-- 定义跳转的文件的前后缀 ,视图模式配置 --> 20 <bean 21 class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 22 <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 --> 23 <property name="prefix" value="/WEB-INF/" /> 24 <property name="suffix" value=".jsp" /> 25 </bean> 26 </beans>
6.配置jdbc.properties文件
# jdbc
jdbc.driver=com.mysql.jdbc.Driver
jdbc.validation.query=SELECT 1
jdbc.url=jdbc:mysql://1192.168.11.123:3306/zzl?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456
7.配置spring-mybaties.xml文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 3 <configuration> 4 <!-- 暂时不需要其他配置--> 5 </configuration>
8.配置log4j.properties日志记录文件
1 log4j.rootLogger=DEBUG,console,dailyFile,im 2 log4j.additivity.org.apache=true 3 4 # console 5 log4j.appender.console=org.apache.log4j.ConsoleAppender 6 log4j.appender.console.Threshold=DEBUG 7 log4j.appender.console.ImmediateFlush=true 8 log4j.appender.console.Target=System.err 9 log4j.appender.console.layout=org.apache.log4j.PatternLayout 10 log4j.appender.console.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n 11 12 # logFile 13 log4j.appender.logFile=org.apache.log4j.FileAppender 14 log4j.appender.logFile.Threshold=DEBUG 15 log4j.appender.logFile.ImmediateFlush=true 16 log4j.appender.logFile.Append=true 17 log4j.appender.logFile.File=D:/iflytek/log/extjs/log.log4j 18 log4j.appender.logFile.layout=org.apache.log4j.PatternLayout 19 log4j.appender.logFile.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
9.controller
1 package com.iflytek.extjs.controller; 2 3 import org.apache.log4j.Logger; 4 import org.springframework.beans.factory.annotation.Autowired; 5 import org.springframework.stereotype.Controller; 6 import org.springframework.web.bind.annotation.RequestMapping; 7 8 import com.iflytek.extjs.domain.User; 9 import com.iflytek.extjs.service.UserService; 10 11 @Controller 12 @RequestMapping("/user") 13 public class UserController { 14 private static final Logger LOG = Logger.getLogger(UserController.class); 15 @Autowired 16 private UserService userService; 17 18 @RequestMapping(value="save.do") 19 public void turnToIndexHtml(){ 20 User user = new User("0101","AAAAAAA","bbb"); 21 userService.saveUser(user); 22 LOG.info("入库成功!"); 23 } 24 25 }
10.service
package com.iflytek.extjs.service; import com.iflytek.extjs.domain.User; public interface UserService { public void saveUser(User user); }
1 package com.iflytek.extjs.service.serviceImpl; 2 3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Service; 5 6 import com.iflytek.extjs.dao.UserDao; 7 import com.iflytek.extjs.domain.User; 8 import com.iflytek.extjs.service.UserService; 9 @Service 10 public class UserServiceImpl implements UserService{ 11 12 @Autowired 13 private UserDao userDao; 14 15 public void saveUser(User user) { 16 userDao.saveUser(user); 17 } 18 19 }
11.dao
1 package com.iflytek.extjs.dao; 2 3 import com.iflytek.extjs.domain.User; 4 5 public interface UserDao { 6 7 public void saveUser(User user); 8 9 }
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 <mapper namespace="com.iflytek.extjs.dao.UserDao"> 4 5 <resultMap id="baseResultMap" type="com.iflytek.extjs.domain.User"> 6 <id column="user_id" property="user_id" jdbcType="VARCHAR" /> 7 <result column="dept_name" property="dept_name" jdbcType="VARCHAR" /> 8 <result column="user_name" property="user_name" jdbcType="VARCHAR" /> 9 </resultMap> 10 11 <sql id="user_column_list"> 12 user_id,dept_name,user_name 13 </sql> 14 15 <insert id="saveUser" parameterType="com.iflytek.extjs.domain.User"> 16 insert into t_user_info 17 <trim prefix="(" suffix=")" suffixOverrides=","> 18 <if test="user_id != null"> 19 user_id, 20 </if> 21 <if test="dept_name != null"> 22 dept_name, 23 </if> 24 <if test="user_name != null"> 25 user_name, 26 </if> 27 </trim> 28 <trim prefix="values (" suffix=")" suffixOverrides=","> 29 <if test="user_id != null"> 30 #{user_id,jdbcType=VARCHAR}, 31 </if> 32 <if test="dept_name != null"> 33 #{dept_name,jdbcType=VARCHAR}, 34 </if> 35 <if test="user_name != null"> 36 #{user_name,jdbcType=VARCHAR}, 37 </if> 38 </trim> 39 </insert> 40 </mapper>
注意问题:整个项目中注意编码格式要统一,统一设置UTF-8
参考网址:
http://wosyingjun.iteye.com/blog/2249750
http://www.open-open.com/lib/view/open1426236622935.html
http://www.cnblogs.com/Joetao/articles/4544572.html
http://blog.****.net/kenhins/article/details/42640349