Mybatis3+Spring4+SpringMVC4 整合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis3+Spring4+SpringMVC4 整合相关的知识,希望对你有一定的参考价值。

 首先在整合这个框架的时候,想想其一般的步骤是怎样的,先有个步骤之后,不至于在后面的搞混了,这样在整合的时候也比较清晰些。

然后我们就细细的一步一步来整合。

1  创建一个Web项目。

    

2  导入Mybatis3、Spring4、SpringMVC4、连接数据库(我使用的数据库是mysql)的jar包。

 我所用的包:

技术分享  

 spring-websocket-4.2.0.RELEASE.jar

 

3  创建Mybatis3、Spring4、SpringMVC4、连接数据库的配置文件。

    技术分享

 

 

4  配置web.xml 

 

技术分享

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5"  3     xmlns="http://java.sun.com/xml/ns/javaee"  4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 7      8     <!-- 告知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> 16     17     18     <!-- 加载LOG4J -->19     <context-param>20         <param-name>log4jConfigLocation</param-name>21         <param-value>/WEB-INF/log4j.xml</param-value>22     </context-param>23     24     <context-param>25         <param-name>log4jRefreshInterval</param-name>26         <param-value>60000</param-value>27     </context-param>28     29     <!-- 动态设置项目的运行路径 -->30     <context-param>31         <param-name>webAppRootKey</param-name>32         <param-value>ssm.root</param-value>33     </context-param>34     35     <!-- 配置静态资源 -->36     <servlet-mapping>37         <servlet-name>default</servlet-name>38         <url-pattern>/static/*</url-pattern>39     </servlet-mapping>40     41     42     <!-- 配置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>57     58     <!-- 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>77     78     <!-- 登录过滤器-->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>91     92     <listener>93         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>94     </listener>95     96   <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 jdbc.username=root4 jdbc.password=root

 

6 mybatis.cfg.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>
    </configuration>

 

7  mvc-servlet.xml

技术分享

 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:context="http://www.springframework.org/schema/context" 4     xmlns:mvc="http://www.springframework.org/schema/mvc" 5     xsi:schemaLocation="http://www.springframework.org/schema/beans 6 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 7 http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-3.0.xsd 8 http://www.springframework.org/schema/mvc   
 9 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">10 11     <!-- 启动注解,注册服务,如验证框架、全局类型转换器-->12     <mvc:annotation-driven/>13     14     15     <!-- 启动自动扫描 -->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>20     21     22     <!-- 配置视图解析器 -->23     <!--24        prefix和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.xml

  

技术分享

 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:context="http://www.springframework.org/schema/context" 4     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 5     xsi:schemaLocation="http://www.springframework.org/schema/beans 6     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
 7     http://www.springframework.org/schema/aop 
 8     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
 9     http://www.springframework.org/schema/tx10     http://www.springframework.org/schema/tx/spring-tx-3.1.xsd11     http://www.springframework.org/schema/context12     http://www.springframework.org/schema/context/spring-context-4.2.xsd">13     14     15      <!-- 开启自动扫包 -->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>20     21     <!-- 启动AOP支持 -->22     <aop:aspectj-autoproxy/>23     24     <!-- 引入外部数据源配置信息 -->25     <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">26         <property name="locations">27             <value>classpath:datasource.properties</value>28         </property>29     </bean>30     31     <!-- 配置数据源 -->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="${jdbc.username}"></property>36         <property name="password" value="${jdbc.password}"></property>37     </bean>38     39     40     <!-- 配置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>48     49     <!-- 自动扫描所有的Mapper接口与文件 -->50     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">51         <property name="basePackage" value="com.cy.ssm.mapper"></property>52     </bean>53     54     <!-- 配置事务管理器 -->55     <bean id="txManager"56         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">57         <property name="dataSource" ref="dataSource"></property>58     </bean>59     60     <!-- 定义个通知,指定事务管理器 -->61     <tx:advice id="txAdvice" transaction-manager="txManager">62         <tx:attributes>63             <tx:method name="delete*" propagation="REQUIRED" read-only="false"64                 rollback-for="java.lang.Exception" />65             <tx:method name="save*" propagation="REQUIRED" read-only="false"66                 rollback-for="java.lang.Exception" />67             <tx:method name="insert*" propagation="REQUIRED" read-only="false"68                 rollback-for="java.lang.Exception" />69             <tx:method name="update*" propagation="REQUIRED" read-only="false"70                 rollback-for="java.lang.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>78     79     <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>84     85 </beans>

技术分享

 

 

 9  配置文件都差不多配置好了,接下来就写个测试的。

 技术分享

LoginController .java

技术分享

 1 package com.cy.ssm.controller; 2  3  4 import javax.annotation.Resource; 5 import javax.servlet.http.HttpServletRequest; 6  7 import org.apache.log4j.Logger; 8 import org.springframework.stereotype.Controller; 9 import org.springframework.web.bind.annotation.RequestMapping;10 import org.springframework.web.servlet.ModelAndView;11 12 import com.cy.ssm.beans.UserBean;13 import com.cy.ssm.service.ILoginService;14 15 16 17 @Controller18 public class LoginController {19     private Logger log = Logger.getLogger(this.getClass());20     21     @Resource22     private ILoginService loginServiceImpl;23     24     @RequestMapping("/login")25     public ModelAndView login(HttpServletRequest req,UserBean user){26         log.info(user);27         28         ModelAndView mv = new ModelAndView();29         UserBean u=loginServiceImpl.Login(user.getUsername(), user.getPassword());30     31         if(u != null){32                     33             req.getSession().setAttribute("user", u);34             mv.addObject("password", u.getPassword());35             System.out.println(u.getPassword());36         }37         mv.setViewName("index");38         return mv;39     }40     41     42     43 }

技术分享

 

 jsp页面;

login.jsp

1  <body>2     <form action="<%=basePath%>login" method="post">3         <input type="text" name="username"/>4         <input type="text" name="password"/>5         <input type="submit" value="提交"/>6     </form>

 

 index.jsp

<body>
   ${password }
</body>

 

测试:

技术分享点击提交

技术分享

整体大概就这样了!

技术分享

1. 使用阿里巴巴Druid连接池(高效、功能强大、可扩展性好的数据库连接池、监控数据库访问性能、支持Common-Logging、Log4j和JdkLog,监控数据库访问)
2. 提供高并发JMS消息处理机制
3. 所有功能模块化、所有模块服务化、所有服务原子化的方式,提供可拓展的服务模型,使程序稳定运行,永不宕机
4. 提供Wink RestWebservice服务,故可作为独立服务平台部署

框架整合:

Springmvc + Mybatis + Shiro(权限) + REST(服务) + WebService(服务) + JMS(消息) + Lucene(搜搜引擎) + Quartz(定时调度) + Bootstrap Html5(支持PC、IOS、Android)

框架简介:


项目Maven构建,真实大型互联网架构,做到高并发,大数据处理,整个项目使用定制化服务思想,提供模块化、服务化、原子化的方案,将功能模块进行拆分,可以公用到所有的项目中。架构采用分布式部署架构,所有模块进行拆分,使项目做到绝对解耦,稳定压倒一切~~

持续集成:

1. 我的待办工作流服务(提供Webservice服务)

2. 我的待办工作流集成JMS消息服务(支持高并发,可支持成千上万系统集成)

3. 我的任务提供Rest服务,完成日常的工作管理,通过定时调度平台,动态生成我的任务、循环周期任务、定时邮催提醒完成任务等

4. 文件上传、多线程下载服务化、发送邮件、短信服务化、部门信息服务化、产品信息服务化、信息发布服务化、我的订阅服务化、我的任务服务化、公共链接、我的收藏服务化等

系统模块:

 1.  用户管理:

      用户信息管理(添加、删除、修改、用户授权、用户栏目管理、查询等)

      用户组管理(添加、删除、修改、用户组栏目授权,栏目授权、查询、用户组人员添加查询等)

      用户角色管理(添加、删除、修改、用户角色授权、用户角色栏目信息查询设置等)
 2.  文章管理:

      栏目管理:查询无限极栏目树、创建无限极栏目树分类(导航栏目、图片列表栏目、文章列表栏目、文章内容栏目等)、删除、修改栏目信息。

      文章管理:创建、删除、修改文章,多维度文章查询,包括已发布、未发布、所有文章等。文章富文本编辑器、文章多文件上传、文章状态控制等。
3.  系统设置:

       数据字典管理:支持中、英文信息,支持无限级别分类配置,动态控制是否可用等。

       部门信息管理:支持中、英文无限级别部门信息增加,删除,修改操作,部门列表、树心查询等。

       日志管理:系统日志列表查询、在线查看、在线下载等

       路线管理:集成百度地图API,提供线路查询管理功能

       Druid Monitor(监控):集成阿里巴巴连接池,提供在线连接池监控程序,包括:数据源、SQL监控、URL监控、Session监控、Spring监控等

       网站信息管理:通过系统配置文件进行网站内容操作,包括邮件服务器配置、公司基本信息配置等。

 4.  集成REST服务,可以用作独立服务平台(提供大量实例及测试平台,包括:文件上传下载、邮件短信发送、部门、产品、公共连接、我的收藏、我的任务、信息发布等)

 5.  集成Quartz调度可以用作定时调度平台(动态配置调度类、调度时间,使程序自动执行某些业务)

 6.  Lucene搜索引擎可以将文件资料索引化,支持文件内容搜索、关键字搜索、高亮关键字等,使信息在毫秒内提取查询出来

 7.  用户设置功能包括修改用户信息,修改密码、发送消息,修改个人图片,查看角色、查看用户组,管理员修改角色、用户、用户组等。

 8.  集成Webservice平台包括jaxws服务、CXF框架,配置双加密的权限认证。使服务集成更加安全。

 9.  Bootstrap html5提供了两套前台开环境包括CMS和电子商务网站,使您的开发更加的简洁。

技术点:

1.  Springmvc + Mybatis集成、SpringSecurity权限控制、Spring AOP事务处理。

2.   Wink Rest服务、Webservice服务:jaxws、CXF等

3.  IO 流上传下载文件,多线程操作

4.  发送邮件,配置邮件服务器,发基于html、纯文本格式的邮件

5.  MD5加密 (登陆密码校验加密等),用户统一Session、Cookie管理,统一验证码校验等。

6.  数据库连接池统一配置 

7.  Quartz定时调度任务集成(直接通过配置即可)

8.  Httpclient破解验证码,登陆联通充值平台

9.  汉字、英文拆分、可以用作文档关键字搜索等。

10.  Base64图片处理,支持PC,androidios

11.  Service Socket 、Client Socket 通信技术(已经做过GPRS数据获取,并用到了项目中)

12.  提供大量工具类,可以直接使用

13.  Maven项目构建,您可以直接做架构,可以提升自己的学习能力,使您成为真正的架构师。


技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 技术分享
 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享技术分享
 

 

技术分享技术分享
 

 技术分享
 

技术分享技术分享

 技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 技术分享
 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 技术分享
 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 技术分享
 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享

 

技术分享


以上是关于Mybatis3+Spring4+SpringMVC4 整合的主要内容,如果未能解决你的问题,请参考以下文章

搭建SSM环境——基于Spring4和Mybatis3

Mybatis3+Spring4+SpringMVC4 整合

MyBatis学习总结——Mybatis3.x与Spring4.x整合(转载)

Spring4.2.6+SpringMVC4.2.6+MyBatis3.4.0 整合

MyBatis3.x与Spring4.x整合

MyBatis学习总结——Mybatis3.x与Spring4.x整合