一,搭建项目骨架
使用Idea搭建基于Maven的单模块(即Dao,service,controller以及webapp均在一个父模块中)
1.File->New project创建基于Maven的web项目
2.填写基本的项目信息:
3.选择Maven所在的本地目录,以及配置文件setting.xml的位置
ps:在maven的配置文件setting.xml文件中mirrors节点下配置阿里云的远程仓库镜像地址,可以让项目的目录结构生成以及jar包的下载速度变快.
alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central
4.项目信息填写
5.完成后 ,等待idea生成相应的目录结构
由于该目录结构并不完整,在File->Project Structure上补充完整的目录,同时将目录标记成相应的颜色
二:配置文件
-
pom.xm
基本上每个jar包都有注释(在这里笔者没有具体划分每个jar包的作用范围,导致有些jar包在整合简单的demo中其实并没有用到) -
4.0.0 com.chuyu.web web-ssm war 1.0-SNAPSHOT web-ssm Maven Webapp http://maven.apache.org 4.0.2.RELEASE 3.2.6 1.7.7 1.2.17 4.5 5.1.29 org.springframework spring-core ${spring.version} org.springframework spring-web ${spring.version} org.springframework spring-oxm ${spring.version} org.springframework spring-tx ${spring.version} org.springframework spring-jdbc ${spring.version} org.springframework spring-webmvc ${spring.version} org.springframework spring-aop ${spring.version} org.springframework spring-context-support ${spring.version} org.springframework spring-test ${spring.version} org.mybatis mybatis ${mybatis-version} org.mybatis mybatis-spring 1.2.2 mysql mysql-connector-java ${mysql-driver.version} com.alibaba druid 1.0.18 com.alibaba fastjson 1.1.41 log4j log4j ${log4j-version} org.slf4j slf4j-api ${slf4j-version} org.slf4j slf4j-log4j12 ${slf4j-version} org.codehaus.jackson jackson-mapper-asl 1.9.13 com.fasterxml.jackson.core jackson-core 2.8.0 com.fasterxml.jackson.core jackson-databind 2.8.0 commons-fileupload commons-fileupload 1.3.1 commons-io commons-io 2.4 commons-codec commons-codec 1.9 junit junit ${Junit-version} test javax.servlet jstl 1.2 javax.servlet servlet-api 2.5 org.mybatis.generator mybatis-generator-maven-plugin 1.3.2 src/main/resources **/*.properties **/*.xml true src/main/java **/*.properties **/*.xml true web-ssm -
application.xml
-
-
jdbc.properties
-
driverClasss=com.mysql.jdbc.DriverjdbcUrl=jdbc:mysql://localhost:3306/quick4j?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNullusername=rootpassword=123456#定义初始连接数initialSize=0#定义最大连接数maxActive=20#定义最小空闲minIdle=1#定义最长等待时间maxWait=60000timeBetweenEvictionRunsMillis=28800
-
-
log4j.properties
-
log4j.rootLogger=INFO,Console,File#控制台日志log4j.appender.Console=org.apache.log4j.ConsoleAppenderlog4j.appender.Console.Target=System.outlog4j.appender.Console.layout=org.apache.log4j.PatternLayoutlog4j.appender.Console.layout.ConversionPattern=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n#普通文件日志log4j.appender.File=org.apache.log4j.RollingFileAppenderlog4j.appender.File.File=E:/IdeaProjects/web-ssm/src/main/logs/SSM.loglog4j.appender.File.MaxFileSize=10MB#输出日志,如果换成DEBUG表示输出DEBUG以上级别日志log4j.appender.File.Threshold=ALLlog4j.appender.File.layout=org.apache.log4j.PatternLayoutlog4j.appender.File.layout.ConversionPattern=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n
-
-
spring-mybatis.xml
-
到处spring整合mybatis的部分完成,如果为了测试是否整合成功,可以在src/main/test 包中新建测试类 ,验证是否连通数据库再整合springMvc.
-
测试类如下
import com.alibaba.fastjson.JSON;import com.chuyu.ssm.model.User_Dao;import com.chuyu.ssm.service.inte.User_loginServices;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations ="classpath*:application.xml")public class TestUser_loginservice { @Autowired private User_loginServices user_loginServices; @Test public void test1(){ User_Dao user=user_loginServices.selectUser("admin", "123456"); System.out.println(JSON.toJSON(user)); }}
这里采用的是Junit4.5的测试方法.其中的service部分的代码可以参考后面章节.
PS:如果比较熟练可以省掉此处测试步骤
-
-
spring-mvc.xml
-
text/html;charset=UTF-8 text/json;charset=UTF-8 application/json;charset=UTF-8 7.web.xm
Archetype Created Web Application contextConfigLocation classpath*:application.xml log4jConfigLocation classpath:log4j.properties org.springframework.web.context.ContextLoaderListener org.springframework.web.util.IntrospectorCleanupListener org.springframework.web.util.Log4jConfigListener encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encodingFilter /* DruidWebstateFilter com.alibaba.druid.support.http.WebStatFilter exclusions *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/* DruidWebstateFilter /* SpringMVC org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:spring-mvc.xml 1 SpringMVC *.action DruidStatView com.alibaba.druid.support.http.StatViewServlet resetEnable false loginUsername admin loginPassword 123456 DruidStatView /druid/* /index.jsp
三,测试代码的编写
1.Dao层以及接口文件:
利用mybatis的插件Mybatis-generaotr-plugin生成实体类,Dao文件以及*Mapper.xml
映射文件:(具体步骤见:)
2.service层代码清单
@Servicepublic class User_loginServiceImpl implements User_loginServices { @Autowired private User_DaoMapper user_dao; @Override public User_Dao selectUser(String userName, String userPassword) { User_DaoExample example=new User_DaoExample(); User_DaoExample.Criteria condition=example.createCriteria(); condition.andUsernameEqualTo(userName); condition.andPasswordEqualTo(userPassword); Listuser_list=user_dao.selectByExample(example); if(!CollectionUtils.isEmpty(user_list)){ return user_list.get(0); } return null; }}
3.Action层代码清单
以简单的登录逻辑演示
@Controller@RequestMapping("/userLogin")public class UserLoginAction { @Autowired private User_loginServices user_loginServices; @RequestMapping("/authentication") public String userLogin(User_Dao paramDao){ User_Dao user=user_loginServices.selectUser(paramDao.getUsername(), paramDao.getPassword()); if (user!=null){ System.out.println(JSON.toJSON(user)); return "success"; } return "fail"; }}
4.前台页面
以简单的登录界面来演示整合的SSM,登录成功则跳转到成功页面,失败则跳转到失败页面
由于在配置文件中指定的前缀为/web-inf/jsp/ ,所有在web/info下新建jsp文件夹
index.jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>登录界面!
其他登录成功和失败跳转的页面即在body里面添加内容以作区分即可.
5:数据库
本例以Mysql为例,建立一个简单的表包含id,username,password 即可作为测试用
四:Tomcat的部署
1.先打包成war包
对应Maven的各个生命周期,包括插件的知识详见:
(打包过程中可能会出现:
[WARNING] Warning: selected war files include a WEB-INF/web.xml which will be ignored
(webxml attribute is missing from war task, or ignoreWebxml attribute is specified as 'true')解决办法:
pom文件添加一下内容:
org.apache.maven.plugins maven-war-plugin 2.1.1 WEB-INF/web.xml
)
2.点击Edit Configurations
3.添加一个Tomcat服务器
4.配置服务器参数
5.部署jar包,填写访问跟路径名
6:运行部署
点击Tomcat7旁边的运行按钮启动项目,如果没有启动异常,打开浏览器访问http://localhost:8080/web-ssm
访问:
至此,作为一个简单的整合SSM结束,后续也会在这个基础上作进一步的优化,包括数据的缓存,模块的划分(Maven 继承与聚合),分布式框架的集群搭建,以及Nginx的负载均衡等