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,先贴我配置好的整合图,然后你按结构先建立空的。

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

但是一般整合不需要其他东西,你想顺利整合可以百度去搜这些jar包然后自己拼装。
我使用框架都是最新的版本:
Spring4.39与 MyBatis3.44
开始整合看着完整得结构我直接配置web.xml
1.web.xml配置
- <?xml version=“1.0” encoding=“UTF-8”?>
- <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”>
- <display-name>ssm</display-name>
- <servlet-mapping>
- <servlet-name>default</servlet-name>
- <url-pattern>/assets/*</url-pattern>
- </servlet-mapping>
- <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>
- <servlet>
- <servlet-name>spring4mvc</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>spring4mvc</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/config/spring-*.xml</param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <servlet>
- <servlet-name>DruidStatView</servlet-name>
- <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>DruidStatView</servlet-name>
- <url-pattern>/druid/*</url-pattern>
- </servlet-mapping>
- <error-page>
- <error-code>404</error-code>
- <location>/error/404.jsp</location>
- </error-page>
- <error-page>
- <error-code>500</error-code>
- <location>/error/500.jsp</location>
- </error-page>
- </web-app>
2.建立spring4mvc-servlet.xml配置文件
看名字就知道这个就是springMVC配置
- <?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:context=“http://www.springframework.org/schema/context”
- xmlns:mvc=“http://www.springframework.org/schema/mvc”
- xmlns:cache=“http://www.springframework.org/schema/cache”
- xsi:schemaLocation=“http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
- http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd”>
- <!– 启用spring mvc 注解–>
- <mvc:annotation-driven>
- <!– 启动JSON格式的配置 –>
- <mvc:message-converters>
- <!– 这里也可以自己定制class –>
- <bean class=“com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter”>
- <property name=“supportedMediaTypes”>
- <list>
- <value>text/html;charset=UTF-8</value> <!– 避免IE出现下载JSON文件的情况 –>
- </list>
- </property>
- </bean>
- </mvc:message-converters>
- </mvc:annotation-driven>
- <!– 对静态资源文件的访问 缓存一年
- <mvc:resources mapping=“/images/**” location=“/WEB-INF/images/” cache-period=“31536000”/>
- <mvc:resources mapping=“/css/**” location=“/WEB-INF/css/” />
- <mvc:resources mapping=“/js/**” location=“/WEB-INF/js/” />
- <mvc:resources mapping=“/fonts/**” location=“/WEB-INF/fonts/” />
- <mvc:resources mapping=“/favicon.ico” location=“favicon.ico” />
- –>
- <!– 自动扫描的包名 ,使Spring支持自动检测组件,如注解的Controller–>
- <context:component-scan base-package=“cc.javar.controller” />
- <context:component-scan base-package=“cc.javar.service”/>
- <!– 视图解析器:定义跳转的文件的前后缀 –>
- <bean id=“viewResolver” class=“org.springframework.web.servlet.view.InternalResourceViewResolver”>
- <property name=“prefix” value=“/WEB-INF/jsp/” />
- <property name=“suffix” value=“.jsp” /> <!–可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 –>
- </bean>
- <!–<mvc:view-controller path=“/” view-name=“forward:/index.jsp”/> –>
- <!– 缓存配置(两种) –>
- <!– 启用缓存注解功能(请将其配置在Spring主配置文件中) –>
- <cache:annotation-driven cache-manager=“cacheManager”/>
- <!– Spring自己的基于java.util.concurrent.ConcurrentHashMap实现的缓存管理器(该功能是从Spring3.1开始提供的) –>
- <!–
- <bean id=“cacheManager” class=“org.springframework.cache.support.SimpleCacheManager”>
- <property name=“caches”>
- <set>
- <bean name=“myCache” class=“org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean”/>
- </set>
- </property>
- </bean>
- –>
- <!– 若只想使用Spring自身提供的缓存器,则注释掉下面的两个关于Ehcache配置的bean,并启用上面的SimpleCacheManager即可 –>
- <!– Spring提供的基于的Ehcache实现的缓存管理器 –>
- <bean id=“cacheManagerFactory” class=“org.springframework.cache.ehcache.EhCacheManagerFactoryBean”>
- <property name=“configLocation” value=“classpath:ehcache.xml”/>
- </bean>
- <bean id=“cacheManager” class=“org.springframework.cache.ehcache.EhCacheCacheManager”>
- <property name=“cacheManager” ref=“cacheManagerFactory”/>
- </bean>
- </beans>
3.spring-dao.xml 配置
这个就是spring和mybatis整合得配置 主要就是自动扫描,自动注入,配置数据库。
- <?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:mybatis=“http://mybatis.org/schema/mybatis-spring”
- xmlns:context=“http://www.springframework.org/schema/context”
- xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd”>
- <!– 该包下的类支持注解,表示会被当作{@code mybatis mapper}处理 配置了之后表示可以自动引入mapper类–>
- <mybatis:scan base-package=“cc.javar.dao”/>
- <!–引入属性文件 –>
- <context:property-placeholder location=“classpath:javar.properties”/>
- <!–数据库连接–>
- <bean id=“dataSource” class=“com.alibaba.druid.pool.DruidDataSource” init-method=“init” destroy-method=“close”>
- <property name=“url” value=“${jdbc.url}” />
- <property name=“username” value=“${jdbc.username}”/>
- <property name=“password” value=“${jdbc.password}”/>
- <!– 配置初始化大小、最小、最大 –>
- <property name=“initialSize” value=“${jdbc.initialSize}”/>
- <property name=“maxActive” value=“${jdbc.maxActive}”/>
- <property name=“minIdle” value=“${jdbc.minIdle}”/>
- <!– 配置获取连接等待超时的时间 –>
- <property name=“maxWait” value=“${jdbc.maxWait}”/>
- <!– 配置监控统计拦截的filters –>
- <property name=“filters” value=“${jdbc.filters}”/>
- <!– 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 –>
- <property name=“timeBetweenEvictionRunsMillis” value=“${jdbc.timeBetweenEvictionRunsMillis}”/>
- <!– 配置一个连接在池中最小生存的时间,单位是毫秒 –>
- <property name=“minEvictableIdleTimeMillis” value=“${jdbc.minEvictableIdleTimeMillis}”/>
- <!–
- <property name=“validationQuery”><value>SELECT ‘x’</value></property>
- <property name=“testWhileIdle”><value>true</value></property>
- <property name=“testOnBorrow”><value>false</value></property>
- <property name=“testOnReturn”><value>false</value></property>
- <property name=“poolPreparedStatements”><value>true</value></property>
- <property name=“maxOpenPreparedStatements”><value>20</value></property>
- —>
- </bean>
- <!– mybatis配置 –>
- <bean id=“sqlSessionFactory” class=“org.mybatis.spring.SqlSessionFactoryBean”>
- <property name=“dataSource” ref=“dataSource”/>
- <property name=“mapperLocations”>
- <array>
- <value>classpath:cc.javar.dao/*.xml</value>
- </array>
- </property>
- <property name=“typeAliasesPackage” value=“cc.javar.model”/>
- <property name=“plugins”>
- <array>
- <bean class=“com.github.pagehelper.PageInterceptor”>
- <!– 这里的几个配置主要演示如何使用,如果不理解,一定要去掉下面的配置 –>
- <property name=“properties”>
- <value>
- helperDialect=mysql
- reasonable=true
- supportMethodsArguments=true
- params=count=countSql
- autoRuntimeDialect=true
- </value>
- </property>
- </bean>
- </array>
- </property>
- </bean>
- </beans>
4log4j.properties配置
通过使用Log4j,我们可以查看日志、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.Target=System.out
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m%n
- log4j.appender.file=org.apache.log4j.FileAppender
- log4j.appender.file.File=d:\accp.log
- log4j.appender.file.layout=org.apache.log4j.PatternLayout
- log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %m%n
- log4j.rootLogger=error, stdout, file
5javar.properties配置
这个就是数据库配置与上面引用到得。
- jdbcjdbc.url=jdbc\:mysql\://192.168.0.101\:3306/ssm?useUnicode\=true&characterEncoding\=UTF-8&zeroDateTimeBehavior\=convertToNull
- jdbc.username=root
- jdbc.password=123141
- jdbc.initialSize=1
- jdbc.maxActive=20
- jdbc.minIdle=20
- jdbc.maxWait=60000
- jdbc.filters=stat
- jdbc.timeBetweenEvictionRunsMillis=60000
- jdbc.minEvictableIdleTimeMillis=300000
6.ehcache.xml配置
这个是数据库缓存插件想用就配置下。
- <?xml version=“1.0” encoding=“UTF-8”?>
- <ehcache dynamicConfig=“false” monitoring=“off” updateCheck=“false”
- xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=“ehcache.xsd”>
- <!– 定义缓存策略
- eternal=“false” // 元素是否永恒,如果是就永不过期(必须设置)
- maxEntriesLocalHeap=“1000” // 堆内存中最大缓存对象数,0没有限制(必须设置)
- overflowToDisk=“false” // 当缓存达到maxElementsInMemory值是,是否允许溢出到磁盘(必须设置)
- diskPersistent=“false” // 磁盘缓存在VM重新启动时是否保持(默认为false)
- timeToIdleSeconds=“0” // 导致元素过期的访问间隔(秒为单位). 当eternal为false时,这个属性才有效,0表示可以永远空闲,默认为0
- timeToLiveSeconds=“600” // 元素在缓存里存在的时间(秒为单位). 0 表示永远存在不过期
- memoryStoreEvictionPolicy=“LFU” // 当达到maxElementsInMemory时,如何强制进行驱逐默认使用”最近使用(LRU)”策略,其它还有先入先出FIFO,最少使用LFU,较少使用LRU
- —>
- <defaultCache eternal=“false” maxEntriesLocalHeap=“0” timeToIdleSeconds=“300” timeToLiveSeconds=“300”/>
- <cache name=“myCache” maxEntriesLocalHeap=“1000” />
- </ehcache>
到此为止其实配置已经好了,已经整合完毕。如想详细他其他文件继续看。
但是我怕有得mybatis不会使用这里贴出UserMapper.xml 这里一定要跟Dao里得接口同名
- <?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=“cc.javar.dao.UserMapper”>
- <select id=“findUserByName” resultType=“cc.javar.model.User”>
- select id, username , password from user where username = #{username}
- </select>
- <select id=“findAllUser” resultType=“cc.javar.model.User”>
- select * from user
- </select>
- <select id=“findUserById” resultType=“cc.javar.model.User”>
- select id, username , password from user where id = #{id}
- </select>
- <insert id=“addUser” >
- insert into user (username,password)
- values(#{username},#{password})
- </insert>
- <delete id=“deleteUser”>
- delete from user where id=#{id}
- </delete>
- <update id=“updateUser” >
- update user
- <set>
- <if test=“username !=null and username !=””>username =#{username},</if>
- <if test=“password !=null and password !=””>password =#{password}</if>
- </set>
- where id = #{id}
- </update>
- <select id=“findUserByNameLike” parameterType=“String” resultType=“cc.javar.model.User”>
- select * from user where username LIKE “%”#{username}”%”
- </select>
- </mapper>
接着贴出UserMapper.java
- /**
- *
- */
- package cc.javar.dao;
- import java.util.List;
- import cc.javar.model.User;
- /**
- * @author 遨游死神
- * 2017-6-17
- */
- public interface UserMapper {
- public User findUserByName(String username);
- public String getUsernameById(Integer id);
- public List<User> findAllUser();
- public int addUser(User user);
- public int deleteUser(Integer id);
- public int updateUser(User user);
- public User findUserById(Integer id);
- public List<User> findUserByNameLike(String username);
- }
看到这里看出这里应该如何写了吗? 对了,一定要ID和方法名相同!(一点都不了解得,先去我写过一篇mybatis文章参考)
这里在贴出UserService.java,在spring中如何写的
- /**
- *
- */
- package cc.javar.service;
- import java.util.List;
- import javax.annotation.Resource;
- import org.springframework.stereotype.Service;
- import cc.javar.dao.UserMapper;
- import cc.javar.model.User;
- /**
- * @author 遨游死神
- * 2017-6-17
- */
- @Service
- public class UserService {
- @Resource
- private UserMapper userMapper;
- /**
- * @param username
- * @return
- */
- public User findUserByName(String username) {
- return userMapper.findUserByName(username);
- }
- public List<User> findAllUser(){
- return userMapper.findAllUser();
- }
- public int addUser(User user){
- int result = userMapper.addUser(user);
- return result;
- }
- public int deleteUser(Integer id){
- int result = userMapper.deleteUser(id);
- return result;
- }
- public int updateUser(User user){
- int result=userMapper.updateUser(user);
- return result;
- }
- public User findUserById(Integer id) {
- // TODO Auto-generated method stub
- return userMapper.findUserById(id);
- }
- public List<User> findUserByNameLike(String username){
- return userMapper.findUserByNameLike(username);
- }
- }
在贴出UserController.javr 中登陆和获取所有用户的方法,其他的就不提供了。
- /**
- *
- */
- package cc.javar.controller;
- import java.util.List;
- import java.util.Map;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import com.github.pagehelper.PageHelper;
- import com.github.pagehelper.PageInfo;
- import cc.javar.model.User;
- import cc.javar.service.UserService;
- /**
- * @author 遨游死神
- * 2017-6-17
- */
- @Controller
- public class UserController {
- @Autowired
- private UserService userService;
- /**
- * 登陆
- * @param request
- * @param response
- * @param username
- * @param password
- * @return
- * @throws Exception
- */
- @RequestMapping(value = “/login”)
- public String login(HttpServletRequest request,HttpServletResponse response,
- String username, String password) throws Exception{
- User user = userService.findUserByName(username);
- if (user == null) {
- request.getSession().setAttribute(“message”, “用户名不存在,请重新登录”);
- return “login”;
- }else {
- if (user.getPassword().equals(password)) {
- request.getSession().setAttribute(“message”, “登陆成功”);
- return “success”;
- }else {
- request.getSession().setAttribute(“message”, “用户名密码错误,请重新登录”);
- return “login”;
- }
- }
- }
- /**
- * 获取所有用户
- * @param map
- * @return
- */
- @RequestMapping(“/getusers”)
- public String gerUsers(Map<String,Object> map) {
- List<User> users=userService.findAllUser();
- map.put(“allUser”, users);
- System.out.println(map.size());
- return “userList”;
- }
- }
到此就算全部配置OK了 ,不会使用得先去了解下开始介绍得第一部分。
为何把这里后面的也写上,怕新手不理解如何写法。
尽量自己一个个敲出来,不然你很难理解。
就按结构创建即可。
前端页面自己写。
现在放出完整框架包,解压导入即可使用,如需其他功能自行配制。
发表评论