SSM框架整合(spring springMVC mybatis) – Java爱好者
Java爱好者
Java爱好者
SSM框架整合(spring springMVC mybatis)

1、基本概念

Spring是什么?
什么是Springmvc?
什么是MyBatis?

 

 

2、开发环境搭建

1.JDK的安装

这里不重点说明 下载JDK1.8

JAVA开发软件下载
http://www.172u.cn/thread-494-1-1.html
(出处: 一起遨游网)

2.Eclipse的安装

Eclipse 64位版(eclipse下载64位) V4.5官方版(官方汉化包)
http://www.172u.cn/thread-933-1-1.html
(出处: 一起遨游网)

3.mysql的安装

这里可以看这文章

MySQL 安装
http://www.172u.cn/thread-1039-1-1.html
(出处: 一起遨游网)

4.tomcat的安装

如何配置Tomcat服务器环境
http://www.172u.cn/thread-953-1-1.html
(出处: 一起遨游网)

5.Spring4.39与 MyBatis3.44的下载!
Spring是什么?
什么是Springmvc?
什么是MyBatis?

这里文章提供下载,但是还是缺少一些东西

这个就是整合spring和mybatis要用的包

SpringMyBatis 然后还需要mysql链接包,阿里的数据池 Druid

更多的参考图下面去下载!

 

 

3、SSM整合

 

这里我们手工搭建不靠Maven,先贴我配置好的整合图,然后你按结构先建立空的。

https://doc.172u.top/down/2017/06/1.png

 

然后贴jar包图,包含了几乎常用得必需品和增值功能(因为太多了,直接目录上截图)!

https://doc.172u.top/down/2017/06/20170627134704.png

但是一般整合不需要其他东西,你想顺利整合可以百度去搜这些jar包然后自己拼装。

我使用框架都是最新的版本:

Spring4.39与 MyBatis3.44

 

开始整合看着完整得结构我直接配置web.xml

1.web.xml配置

  1. <?xml version=“1.0” encoding=“UTF-8”?>
  2. <web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns=“http://xmlns.jcp.org/xml/ns/javaee” xsi:schemaLocation=“http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd” id=“WebApp_ID” version=“3.1”>
  3.   <display-name>ssm</display-name>
  4.     <servlet-mapping>
  5.     <servlet-name>default</servlet-name>
  6.     <url-pattern>/assets/*</url-pattern>
  7.   </servlet-mapping>
  8.   <filter>
  9.     <filter-name>encodingFilter</filter-name>
  10.     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  11.     <init-param>
  12.       <param-name>encoding</param-name>
  13.       <param-value>UTF-8</param-value>
  14.     </init-param>
  15.     <init-param>
  16.       <param-name>forceEncoding</param-name>
  17.       <param-value>true</param-value>
  18.     </init-param>
  19.   </filter>
  20.   <filter-mapping>
  21.     <filter-name>encodingFilter</filter-name>
  22.     <url-pattern>/*</url-pattern>
  23.   </filter-mapping>
  24.   <servlet>
  25.     <servlet-name>spring4mvc</servlet-name>
  26.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  27.     <load-on-startup>1</load-on-startup>
  28.   </servlet>
  29.   <servlet-mapping>
  30.     <servlet-name>spring4mvc</servlet-name>
  31.     <url-pattern>/</url-pattern>
  32.   </servlet-mapping>
  33.   <context-param>
  34.     <param-name>contextConfigLocation</param-name>
  35.     <param-value>/WEB-INF/config/spring-*.xml</param-value>
  36.   </context-param>
  37.   <listener>
  38.     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  39.   </listener>
  40.   <servlet>
  41.     <servlet-name>DruidStatView</servlet-name>
  42.     <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
  43.   </servlet>
  44.   <servlet-mapping>
  45.     <servlet-name>DruidStatView</servlet-name>
  46.     <url-pattern>/druid/*</url-pattern>
  47.   </servlet-mapping>
  48.   <error-page>
  49.     <error-code>404</error-code>
  50.     <location>/error/404.jsp</location>
  51.   </error-page>
  52.   <error-page>
  53.     <error-code>500</error-code>
  54.     <location>/error/500.jsp</location>
  55.   </error-page>
  56. </web-app>

2.建立spring4mvc-servlet.xml配置文件
看名字就知道这个就是springMVC配置

  1. <?xml version=“1.0” encoding=“UTF-8”?>
  2. <beans xmlns=“http://www.springframework.org/schema/beans” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
  3.        xmlns:context=“http://www.springframework.org/schema/context”
  4.        xmlns:mvc=“http://www.springframework.org/schema/mvc”
  5.        xmlns:cache=“http://www.springframework.org/schema/cache”
  6.        xsi:schemaLocation=“http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  7.         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
  8.         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
  9.         http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd”>
  10.     <!– 启用spring mvc 注解–>
  11.     <mvc:annotation-driven>
  12.         <!– 启动JSON格式的配置 –>
  13.         <mvc:message-converters>
  14.         <!– 这里也可以自己定制class –>
  15.         <bean class=“com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter”>
  16.             <property name=“supportedMediaTypes”>
  17.                 <list>
  18.                     <value>text/html;charset=UTF-8</value>  <!– 避免IE出现下载JSON文件的情况 –>
  19.                 </list>
  20.             </property>
  21.         </bean>
  22.     </mvc:message-converters>
  23.     </mvc:annotation-driven>
  24.     <!– 对静态资源文件的访问   缓存一年
  25.     <mvc:resources mapping=“/images/**” location=“/WEB-INF/images/”  cache-period=“31536000”/>
  26.     <mvc:resources mapping=“/css/**” location=“/WEB-INF/css/” />
  27.     <mvc:resources mapping=“/js/**” location=“/WEB-INF/js/” />
  28.     <mvc:resources mapping=“/fonts/**” location=“/WEB-INF/fonts/” />
  29.     <mvc:resources mapping=“/favicon.ico” location=“favicon.ico” />
  30.      –>
  31.     <!– 自动扫描的包名 ,使Spring支持自动检测组件,如注解的Controller–>
  32.     <context:component-scan base-package=“cc.javar.controller” />
  33.     <context:component-scan base-package=“cc.javar.service”/>
  34.     <!– 视图解析器:定义跳转的文件的前后缀 –>
  35.     <bean id=“viewResolver” class=“org.springframework.web.servlet.view.InternalResourceViewResolver”>
  36.         <property name=“prefix” value=“/WEB-INF/jsp/” />
  37.         <property name=“suffix” value=“.jsp” />  <!–可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑  –>
  38.     </bean>
  39.     <!–<mvc:view-controller path=“/” view-name=“forward:/index.jsp”/>  –>
  40.     <!– 缓存配置(两种) –>
  41.     <!– 启用缓存注解功能(请将其配置在Spring主配置文件中) –>
  42.     <cache:annotation-driven cache-manager=“cacheManager”/>
  43.     <!– Spring自己的基于java.util.concurrent.ConcurrentHashMap实现的缓存管理器(该功能是从Spring3.1开始提供的) –>
  44.     <!–
  45.     <bean id=“cacheManager” class=“org.springframework.cache.support.SimpleCacheManager”>
  46.         <property name=“caches”>
  47.             <set>
  48.                 <bean name=“myCache” class=“org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean”/>
  49.             </set>
  50.         </property>
  51.     </bean>
  52.      –>
  53.     <!– 若只想使用Spring自身提供的缓存器,则注释掉下面的两个关于Ehcache配置的bean,并启用上面的SimpleCacheManager即可 –>
  54.     <!– Spring提供的基于的Ehcache实现的缓存管理器 –>
  55.     <bean id=“cacheManagerFactory” class=“org.springframework.cache.ehcache.EhCacheManagerFactoryBean”>
  56.         <property name=“configLocation” value=“classpath:ehcache.xml”/>
  57.     </bean>
  58.     <bean id=“cacheManager” class=“org.springframework.cache.ehcache.EhCacheCacheManager”>
  59.         <property name=“cacheManager” ref=“cacheManagerFactory”/>
  60.     </bean>
  61. </beans>

3.spring-dao.xml 配置
这个就是spring和mybatis整合得配置 主要就是自动扫描,自动注入,配置数据库。

  1. <?xml version=“1.0” encoding=“UTF-8”?>
  2. <beans xmlns=“http://www.springframework.org/schema/beans” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
  3.        xmlns:mybatis=“http://mybatis.org/schema/mybatis-spring”
  4.        xmlns:context=“http://www.springframework.org/schema/context”
  5.        xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  6.        http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd
  7.        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd”>
  8.     <!– 该包下的类支持注解,表示会被当作{@code mybatis mapper}处理 配置了之后表示可以自动引入mapper类–>
  9.     <mybatis:scan base-package=“cc.javar.dao”/>
  10.     <!–引入属性文件 –>
  11.     <context:property-placeholder location=“classpath:javar.properties”/>
  12.     <!–数据库连接–>
  13.     <bean id=“dataSource” class=“com.alibaba.druid.pool.DruidDataSource” init-method=“init” destroy-method=“close”>
  14.         <property name=“url” value=“${jdbc.url}” />
  15.         <property name=“username” value=“${jdbc.username}”/>
  16.         <property name=“password” value=“${jdbc.password}”/>
  17.         <!– 配置初始化大小、最小、最大 –>
  18.         <property name=“initialSize” value=“${jdbc.initialSize}”/>
  19.         <property name=“maxActive” value=“${jdbc.maxActive}”/>
  20.         <property name=“minIdle” value=“${jdbc.minIdle}”/>
  21.         <!– 配置获取连接等待超时的时间 –>
  22.         <property name=“maxWait” value=“${jdbc.maxWait}”/>
  23.         <!– 配置监控统计拦截的filters –>
  24.         <property name=“filters” value=“${jdbc.filters}”/>
  25.         <!– 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 –>
  26.         <property name=“timeBetweenEvictionRunsMillis” value=“${jdbc.timeBetweenEvictionRunsMillis}”/>
  27.         <!– 配置一个连接在池中最小生存的时间,单位是毫秒 –>
  28.         <property name=“minEvictableIdleTimeMillis” value=“${jdbc.minEvictableIdleTimeMillis}”/>
  29.         <!–
  30.         <property name=“validationQuery”><value>SELECT ‘x’</value></property>
  31.         <property name=“testWhileIdle”><value>true</value></property>
  32.         <property name=“testOnBorrow”><value>false</value></property>
  33.         <property name=“testOnReturn”><value>false</value></property>
  34.         <property name=“poolPreparedStatements”><value>true</value></property>
  35.         <property name=“maxOpenPreparedStatements”><value>20</value></property>
  36.          —>
  37.     </bean>
  38.     <!– mybatis配置 –>
  39.        <bean id=“sqlSessionFactory” class=“org.mybatis.spring.SqlSessionFactoryBean”>
  40.         <property name=“dataSource” ref=“dataSource”/>
  41.         <property name=“mapperLocations”>
  42.             <array>
  43.                 <value>classpath:cc.javar.dao/*.xml</value>
  44.             </array>
  45.         </property>
  46.         <property name=“typeAliasesPackage” value=“cc.javar.model”/>
  47.         <property name=“plugins”>
  48.             <array>
  49.                 <bean class=“com.github.pagehelper.PageInterceptor”>
  50.                     <!– 这里的几个配置主要演示如何使用,如果不理解,一定要去掉下面的配置 –>
  51.                     <property name=“properties”>
  52.                         <value>
  53.                             helperDialect=mysql
  54.                             reasonable=true
  55.                             supportMethodsArguments=true
  56.                             params=count=countSql
  57.                             autoRuntimeDialect=true
  58.                         </value>
  59.                     </property>
  60.                 </bean>
  61.             </array>
  62.         </property>
  63.     </bean>
  64. </beans>

 

4log4j.properties配置
通过使用Log4j,我们可以查看日志、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程

  1. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  2. log4j.appender.stdout.Target=System.out
  3. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  4. log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}  %m%n
  5. log4j.appender.file=org.apache.log4j.FileAppender
  6. log4j.appender.file.File=d:\accp.log
  7. log4j.appender.file.layout=org.apache.log4j.PatternLayout
  8. log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}  %l  %m%n
  9. log4j.rootLogger=error, stdout, file

5javar.properties配置
这个就是数据库配置与上面引用到得。

  1. jdbcjdbc.url=jdbc\:mysql\://192.168.0.101\:3306/ssm?useUnicode\=true&characterEncoding\=UTF-8&zeroDateTimeBehavior\=convertToNull
  2. jdbc.username=root
  3. jdbc.password=123141
  4. jdbc.initialSize=1
  5. jdbc.maxActive=20
  6. jdbc.minIdle=20
  7. jdbc.maxWait=60000
  8. jdbc.filters=stat
  9. jdbc.timeBetweenEvictionRunsMillis=60000
  10. jdbc.minEvictableIdleTimeMillis=300000

6.ehcache.xml配置
这个是数据库缓存插件想用就配置下。

  1. <?xml version=“1.0” encoding=“UTF-8”?>
  2. <ehcache dynamicConfig=“false” monitoring=“off” updateCheck=“false”
  3. xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=“ehcache.xsd”>
  4.     <!– 定义缓存策略
  5.         eternal=“false”                 // 元素是否永恒,如果是就永不过期(必须设置)
  6.         maxEntriesLocalHeap=“1000”      // 堆内存中最大缓存对象数,0没有限制(必须设置)
  7.         overflowToDisk=“false”          // 当缓存达到maxElementsInMemory值是,是否允许溢出到磁盘(必须设置)
  8.         diskPersistent=“false”          // 磁盘缓存在VM重新启动时是否保持(默认为false)
  9.         timeToIdleSeconds=“0”           // 导致元素过期的访问间隔(秒为单位). 当eternal为false时,这个属性才有效,0表示可以永远空闲,默认为0
  10.         timeToLiveSeconds=“600”         // 元素在缓存里存在的时间(秒为单位). 0 表示永远存在不过期
  11.         memoryStoreEvictionPolicy=“LFU” // 当达到maxElementsInMemory时,如何强制进行驱逐默认使用”最近使用(LRU)”策略,其它还有先入先出FIFO,最少使用LFU,较少使用LRU
  12.    —>
  13.     <defaultCache eternal=“false” maxEntriesLocalHeap=“0” timeToIdleSeconds=“300” timeToLiveSeconds=“300”/>
  14.     <cache name=“myCache” maxEntriesLocalHeap=“1000” />
  15. </ehcache>

到此为止其实配置已经好了,已经整合完毕。如想详细他其他文件继续看。

但是我怕有得mybatis不会使用这里贴出UserMapper.xml 这里一定要跟Dao里得接口同名

  1. <?xml version=“1.0” encoding=“UTF-8” ?>
  2. <!DOCTYPE mapper PUBLIC “-//mybatis.org//DTD Mapper 3.0//EN” “http://mybatis.org/dtd/mybatis-3-mapper.dtd”>
  3. <mapper namespace=“cc.javar.dao.UserMapper”>
  4.     <select id=“findUserByName” resultType=“cc.javar.model.User”>
  5.         select id, username , password from user where username = #{username}
  6.     </select>
  7.         <select id=“findAllUser” resultType=“cc.javar.model.User”>
  8.         select * from user
  9.     </select>
  10.     <select id=“findUserById” resultType=“cc.javar.model.User”>
  11.         select id, username , password  from user where id = #{id}
  12.     </select>
  13.     <insert id=“addUser” >
  14.     insert into user (username,password)
  15.     values(#{username},#{password})
  16.     </insert>
  17.     <delete id=“deleteUser”>
  18.     delete from user where id=#{id}
  19.     </delete>
  20.     <update id=“updateUser” >
  21.         update user
  22.         <set>
  23.             <if test=“username !=null and username !=””>username =#{username},</if>
  24.             <if test=“password !=null and password !=””>password =#{password}</if>
  25.         </set>
  26.         where id = #{id}
  27.     </update>
  28.     <select id=“findUserByNameLike” parameterType=“String” resultType=“cc.javar.model.User”>
  29.         select * from user where username LIKE “%”#{username}”%”
  30.     </select>
  31. </mapper>

接着贴出UserMapper.java

  1. /**
  2.  * 
  3.  */
  4. package cc.javar.dao;
  5. import java.util.List;
  6. import cc.javar.model.User;
  7. /**
  8.  * @author 遨游死神
  9.  * 2017-6-17
  10.  */
  11. public interface UserMapper {
  12.     public User findUserByName(String username);
  13.     public String getUsernameById(Integer id);
  14.     public List<User> findAllUser();
  15.     public int addUser(User user);
  16.     public int deleteUser(Integer id);
  17.     public int updateUser(User user);
  18.     public User findUserById(Integer id);
  19.     public List<User> findUserByNameLike(String username);
  20. }

看到这里看出这里应该如何写了吗? 对了,一定要ID和方法名相同!(一点都不了解得,先去我写过一篇mybatis文章参考

这里在贴出UserService.java,在spring中如何写的

  1. /**
  2.  * 
  3.  */
  4. package cc.javar.service;
  5. import java.util.List;
  6. import javax.annotation.Resource;
  7. import org.springframework.stereotype.Service;
  8. import cc.javar.dao.UserMapper;
  9. import cc.javar.model.User;
  10. /**
  11.  * @author 遨游死神
  12.  * 2017-6-17
  13.  */
  14. @Service
  15. public class UserService {
  16.     @Resource
  17.     private UserMapper userMapper;
  18.     /**
  19.      * @param username
  20.      * @return
  21.      */
  22.     public User findUserByName(String username) {
  23.         return userMapper.findUserByName(username);
  24.     }
  25.     public List<User> findAllUser(){
  26.         return userMapper.findAllUser();
  27.     }
  28.     public int addUser(User user){
  29.         int result  = userMapper.addUser(user);
  30.         return  result;
  31.     }
  32.     public int deleteUser(Integer id){
  33.         int result = userMapper.deleteUser(id);
  34.         return result;
  35.     }
  36.     public int updateUser(User user){
  37.         int result=userMapper.updateUser(user);
  38.         return result;
  39.     }
  40.     public User findUserById(Integer id) {
  41.         // TODO Auto-generated method stub
  42.         return userMapper.findUserById(id);
  43.     }
  44.     public List<User> findUserByNameLike(String username){
  45.         return userMapper.findUserByNameLike(username);
  46.     }
  47. }

在贴出UserController.javr 中登陆和获取所有用户的方法,其他的就不提供了。

  1. /**
  2.  * 
  3.  */
  4. package cc.javar.controller;
  5. import java.util.List;
  6. import java.util.Map;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Controller;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import com.github.pagehelper.PageHelper;
  13. import com.github.pagehelper.PageInfo;
  14. import cc.javar.model.User;
  15. import cc.javar.service.UserService;
  16. /**
  17.  * @author 遨游死神
  18.  * 2017-6-17
  19.  */
  20. @Controller
  21. public class UserController {
  22.     @Autowired
  23.     private UserService userService;
  24.     /**
  25.      * 登陆
  26.      * @param request
  27.      * @param response
  28.      * @param username
  29.      * @param password
  30.      * @return
  31.      * @throws Exception
  32.      */
  33.      @RequestMapping(value = “/login”)
  34.         public String login(HttpServletRequest request,HttpServletResponse response,
  35.                  String username,  String password) throws Exception{
  36.                 User user = userService.findUserByName(username);
  37.                 if (user == null) {
  38.                     request.getSession().setAttribute(“message”“用户名不存在,请重新登录”);
  39.                     return “login”;
  40.                 }else {
  41.                     if (user.getPassword().equals(password)) {
  42.                         request.getSession().setAttribute(“message”“登陆成功”);
  43.                         return “success”;
  44.                     }else {
  45.                         request.getSession().setAttribute(“message”“用户名密码错误,请重新登录”);
  46.                         return “login”;
  47.                     }
  48.                 }
  49.         }
  50.     /**
  51.      * 获取所有用户
  52.      * @param map
  53.      * @return
  54.      */
  55.      @RequestMapping(“/getusers”)
  56.         public String gerUsers(Map<String,Object> map) {
  57.             List<User> users=userService.findAllUser();
  58.                 map.put(“allUser”, users);
  59.                 System.out.println(map.size());
  60.             return “userList”;
  61.         }
  62. }

到此就算全部配置OK了 ,不会使用得先去了解下开始介绍得第一部分。

为何把这里后面的也写上,怕新手不理解如何写法。

尽量自己一个个敲出来,不然你很难理解。

就按结构创建即可。

前端页面自己写。

现在放出完整框架包,解压导入即可使用,如需其他功能自行配制。

SSM框架整合包

 

 

遨游死神

文章作者

为了我的梦想而努力,不管结果怎样.

发表评论

textsms
account_circle
email

Java爱好者

SSM框架整合(spring springMVC mybatis)
1、基本概念 Spring是什么? 什么是Springmvc? 什么是MyBatis?     2、开发环境搭建 1.JDK的安装 这里不重点说明 下载JDK1.8 JAVA开发软件下载 http://www.172u.…
扫描二维码继续阅读
2017-06-27