springmvc+spring+mybatis整合首先在整合这个框架的时候,想想其一般的步骤是怎样的,先有个步骤之后,不至于在后面的搞混了,这样在整合的时候也比较清晰些。
然后我们就细细的一步一步来整合。
1 创建一个Web项目。
2 导入Mybatis3、Spring4、SpringMVC4、连接数据库(我使用的数据库是mysql)的jar包。
我所用的包:spring-websocket-4.2.0.RELEASE.jar3 创建Mybatis3、Spring4、SpringMVC4、连接数据库的配置文件。
4 配置web.xml1<?xml version="1.0" encoding="UTF-8"?>2<web-app version="2.5"3xmlns="/xml/ns/javaee"4xmlns:xsi="/2001/XMLSchema-instance" 5xsi:schemaLocation="/xml/ns/javaee6/xml/ns/javaee/web-app_2_5.xsd">78<!-- 告知javaEE容器,有哪些内容需要添加到上下文中去--> 9<context-param>10<param-name>contextConfigLocation</param-name> 11<param-value>12/WEB-INF/classes/applicationContext.xml,13<!-- /WEB-INF/classes/mvc-servlet.xml -->14</param-value>15</context-param>161718<!-- 加载LOG4J -->19<context-param>20<param-name>log4jConfigLocation</param-name> 21<param-value>/WEB-INF/log4j.xml</param-value>22</context-param>2324<context-param>25<param-name>log4jRefreshInterval</param-name> 26<param-value>60000</param-value>27</context-param>2829<!-- 动态设置项目的运行路径-->30<context-param>31<param-name>webAppRootKey</param-name>32<param-value>ssm.root</param-value>33</context-param>3435<!-- 配置静态资源-->36<servlet-mapping>37<servlet-name>default</servlet-name>38<url-pattern>/static/*</url-pattern>39</servlet-mapping>404142<!-- 配置springmvc的前端控制器-->43<servlet>44<servlet-name>mvc</servlet-name>45<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>46<!-- 默认情况下:DispatcherServlet会寻找WEB-INF下,命名规范为[servlet-name]-servlet.xml文件。
如:在上例中,它就会找/WEB-INF/spring-servlet.xml47如果需要修改,需要在web.xml中的<servlet>标记中增加<init-param>。
</init-param>:-->48<init-param>49<param-name>contextConfigLocation</param-name>50<param-value>/WEB-INF/classes/mvc-servlet.xml</param-value>51</init-param>52</servlet>53<servlet-mapping>54<servlet-name>mvc</servlet-name>55<url-pattern>/</url-pattern>56</servlet-mapping>5758<!-- spring框架提供的字符集过滤器-->59<!-- spring Web MVC框架提供了org.springframework.web.filter.CharacterEncodingFilter用于解决POST方式造成的中文乱码问题-->60<filter>61<filter-name>encodingFilter</filter-name>62<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>63<init-param>64<param-name>encoding</param-name>65<param-value>UTF-8</param-value>66</init-param>67<!-- force强制,促使-->68<init-param>69<param-name>forceEncoding</param-name>70<param-value>true</param-value>71</init-param>72</filter>73<filter-mapping>74<filter-name>encodingFilter</filter-name>75<url-pattern>/*</url-pattern>76</filter-mapping>7778<!-- 登录过滤器-->79<filter>80<filter-name>loginFilter</filter-name>81<filter-class>com.cy.ssm.filter.LoginFilter</filter-class>82</filter>83<filter-mapping>84<filter-name>loginFilter</filter-name>85<url-pattern>/*</url-pattern>86</filter-mapping>87<!-- 监听器-->88<listener>89<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 90</listener>9192<listener>93<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>94</listener>9596<welcome-file-list>97<welcome-file>index.jsp</welcome-file>98</welcome-file-list>99</web-app>5 datasource.properties 连接数据库1 jdbc.driver=com.mysql.jdbc.Driver2 jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=UTF-83 ername=root4 jdbc.password=root6 mybatis.cfg.xml文件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-///DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd" ><configuration></configuration>7 mvc-servlet.xml1<?xml version="1.0" encoding="UTF-8"?>2<beans xmlns="/schema/beans"3xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"4xmlns:mvc="/schema/mvc"5xsi:schemaLocation="/schema/beans6/schema/beans/spring-beans-3.0.xsd7/schema/context/schema/context/spring-context-3.0.xsd8/schema/mvc9/schema/mvc/spring-mvc-3.0.xsd">1011<!-- 启动注解,注册服务,如验证框架、全局类型转换器-->12<mvc:annotation-driven/>131415<!-- 启动自动扫描-->16<context:component-scan base-package="com.cy.ssm">17<!-- 制定扫包规则,只扫描使用@Controller注解的JAVA类-->18<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> 19</context:component-scan>202122<!-- 配置视图解析器-->23<!--24prefix和suffix:查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀),25比如传进来的逻辑视图名为WEB-INF/jsp/hello,则该该jsp视图页面应该存放在“WEB-INF/jsp/hello.jsp”;-->26<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">27<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> 28<property name="prefix" value="/"></property><!-- 我这里的视图直接放在WebRoot下的-->29<property name="suffix" value=".jsp"></property>30</bean>31</beans>8 applicationContext.xml1<?xml version="1.0" encoding="UTF-8"?>2<beans xmlns="/schema/beans"3xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"4xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"5xsi:schemaLocation="/schema/beans6/schema/beans/spring-beans-3.0.xsd7/schema/aop8/schema/aop/spring-aop-3.0.xsd9/schema/tx10/schema/tx/spring-tx-3.1.xsd11/schema/context12/schema/context/spring-context-4.2.xsd">131415<!-- 开启自动扫包-->16<context:component-scan base-package="com.cy.ssm">17<!--制定扫包规则,不扫描@Controller注解的JAVA类,其他的还是要扫描-->18<context:exclude-filter type="annotation"expression="org.springframework.stereotype.Controller"/>19</context:component-scan>2021<!-- 启动AOP支持-->22<aop:aspectj-autoproxy/>2324<!-- 引入外部数据源配置信息-->25<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">26<property name="locations">27<value>classpath:datasource.properties</value>28</property>29</bean>3031<!-- 配置数据源-->32<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 33<property name="driverClassName" value="${jdbc.driver}"></property>34<property name="url" value="${jdbc.url}"></property>35<property name="username" value="${ername}"></property>36<property name="password" value="${jdbc.password}"></property>37</bean>383940<!-- 配置Session工厂-->41<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">42<property name="dataSource" ref="dataSource"></property>43<!-- 加载mybatis.cfg.xml文件-->44<property name="configLocation" value="classpath:mybatis.cfg.xml"></property>45<!-- 自动扫描需要定义类别名的包,将包内的JAVA类的类名作为类别名-->46<property name="typeAliasesPackage" value="com.cy.ssm.beans"></property>47</bean>4849<!-- 自动扫描所有的Mapper接口与文件-->50<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">51<property name="basePackage" value="com.cy.ssm.mapper"></property>52</bean>5354<!-- 配置事务管理器-->55<bean id="txManager"56class="org.springframework.jdbc.datasource.DataSourceTransactionManager">57<property name="dataSource" ref="dataSource"></property>58</bean>5960<!-- 定义个通知,指定事务管理器-->61<tx:advice id="txAdvice" transaction-manager="txManager">62<tx:attributes>63<tx:method name="delete*" propagation="REQUIRED" read-only="false"64rollback-for="ng.Exception"/>65<tx:method name="save*" propagation="REQUIRED" read-only="false"66rollback-for="ng.Exception"/>67<tx:method name="insert*" propagation="REQUIRED" read-only="false" 68rollback-for="ng.Exception"/>69<tx:method name="update*" propagation="REQUIRED" read-only="false" 70rollback-for="ng.Exception"/>71<tx:method name="load*" propagation="SUPPORTS" read-only="true"/> 72<tx:method name="find*" propagation="SUPPORTS" read-only="true"/> 73<tx:method name="search*" propagation="SUPPORTS" read-only="true"/> 74<tx:method name="select*" propagation="SUPPORTS" read-only="true"/> 75<tx:method name="get*" propagation="SUPPORTS" read-only="true"/> 76</tx:attributes>77</tx:advice>7879<aop:config>80<!-- 配置一个切入点-->81<aop:pointcut id="serviceMethods" expression="execution(*com.cy.ssm.service.impl.*ServiceImpl.*(..))"/>82<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods"/>83</aop:config>8485</beans>9 配置文件都差不多配置好了,接下来就写个测试的。