基于Maven搭建SSM框架

一、简介
所谓SSM,即是Spring+SpringMVC+MyBatis三个开源框架的整合,是目前流行的作为WEB项目搭建的框架选择。
这篇文章是自己动手搭建并将过程记录,以便加深印象和方便以后查阅。

二、环境
1.操作系统:windows 10
2.IDE版本:Eclipse Luna Release (4.4.0)
3.JDK版本:jdk1.7.0_60
4.tomcat版本:apache-tomcat-7.0.53
5.maven版本:3.2.1
6.数据库:mysql(事先建好数据库)

三、步骤
(一)创建工程

1.New一个maven工程

基于Maven搭建SSM框架_第1张图片

2.点击Next,选择默认工作空间位置;如果勾选了create a simple project会自动创建src/main/java,src/test/java,src/test/resources这些maven项目中常见文件夹,但会缺失web项目需要的web.xml等文件;
此处我们不勾选,点击下一步;

基于Maven搭建SSM框架_第2张图片

3.选择web类型,注意不要选错了,点击Next          基于Maven搭建SSM框架_第3张图片

4.填写GroupID、ArtifactID及版本信息,点击Finish

基于Maven搭建SSM框架_第4张图片

5.工程创建完毕

基于Maven搭建SSM框架_第5张图片


(二)调整项目结构
1.window-Preferences-Server-Runtime Environment添加tomcat,并注意JRE环境为你的jdk版本

基于Maven搭建SSM框架_第6张图片

基于Maven搭建SSM框架_第7张图片

2.这时候看到我们JRE System Library后面显示的还是[J2SE-1.5],并且没有maven项目的src/main/java等文件夹,我们需要调整对应的JRE环境,在工程上右键Build Path-Configure Build Path,在Libraries下选中JRE,右侧edit,选择我们自己的jdk版本

基于Maven搭建SSM框架_第8张图片

基于Maven搭建SSM框架_第9张图片

3.这时候我们的项目就变成了这个样子,JRE版本也对了,src/main等文件夹也有了,但还是缺少src/test/resources,需要手动创建

基于Maven搭建SSM框架_第10张图片

4.右键New一个source folder,名称为src/test/resources

基于Maven搭建SSM框架_第11张图片

基于Maven搭建SSM框架_第12张图片

5.结构调整完毕

基于Maven搭建SSM框架_第13张图片


(三)添加pom依赖,下载SSM框架所需jar包

	4.0.0
	test.java.zxf
	SSMDemo
	war
	0.0.1-SNAPSHOT
	SSMDemo Maven Webapp
	http://maven.apache.org
	
		
		4.3.8.RELEASE
	
	
		
		
			org.springframework
			spring-core
			${spring.version}
		
		
			org.springframework
			spring-aop
			${spring.version}
		
		
			org.springframework
			spring-web
			${spring.version}
		
		
			org.springframework
			spring-webmvc
			${spring.version}
		
		
			org.springframework
			spring-jdbc
			${spring.version}
		
		
			org.springframework
			spring-tx
			${spring.version}
		
		
		
			org.aspectj
			aspectjrt
			1.8.0
		
		
			org.aspectj
			aspectjweaver
			1.8.0
		
		
		
			org.mybatis
			mybatis
			3.3.0
		
		
		
			mysql
			mysql-connector-java
			5.1.31
		
		
		
			com.alibaba
			druid
			1.0.20
		
		
		
			org.mybatis
			mybatis-spring
			1.2.3
		
		
		
			javax.servlet
			jstl
			1.2
		
		
		
			log4j
			log4j
			1.2.17
		
		
			org.slf4j
			slf4j-api
			1.7.21
		
		
		
			junit
			junit
			3.8.1
			test
		
	
	
		SSMDemo
	

下载之后可以看到maven依赖下的包已经都有了

基于Maven搭建SSM框架_第14张图片


(四)配置文件
1.修改web.xml



  Archetype Created Web Application
  
      
        
        contextConfigLocation    
        classpath:spring-mybatis.xml    
        
        
        
        encodingFilter    
        org.springframework.web.filter.CharacterEncodingFilter    
        true    
            
            encoding    
            UTF-8    
            
        
        
        encodingFilter    
        /*    
        
        
        
        org.springframework.web.context.ContextLoaderListener    
        
        
        
        org.springframework.web.util.IntrospectorCleanupListener    
        
    
        
        
        SpringMVC    
        org.springframework.web.servlet.DispatcherServlet    
            
            contextConfigLocation    
            classpath:spring-mvc.xml    
            
        1    
        true    
        
        
        SpringMVC    
            
        /    
        
        
        /index.jsp    
     

2.在resources文件夹下创建spring-mybatis.xml

基于Maven搭建SSM框架_第15张图片

基于Maven搭建SSM框架_第16张图片

点击finish,创建文件
3.配置spring-mybatis.xml
    
    
        
        
        
        
        
        	
        		classpath:jdbc.properties
        		classpath:log4j.properties
        	
           
       
       
        
            
            
            
            
         
    
        
            
            
            
        
    
        
        
            
            
        
    
        
        
            
        
    
4.创建spring-mvc.xml文件
    
    
        
        
        
        
            
            
            
        
5.创建jdbc.properties文件
jdbc.driver=com.mysql.jdbc.Driver  
jdbc.url=jdbc:mysql://127.0.0.1:3306/testdb
jdbc.username=root
jdbc.password=root
6.创建log4j.properties文件
log4j.rootLogger=INFO,Console,File  
#定义日志输出目的地为控制台  
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.Target=System.out  
#可以灵活地指定日志输出格式,下面一行是指定具体的格式  
log4j.appender.Console.layout = org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n  
  
#文件大小到达指定尺寸的时候产生一个新的文件  
log4j.appender.File = org.apache.log4j.RollingFileAppender  
#指定输出目录  
log4j.appender.File.File = logs/ssm.log  
#定义文件最大大小  
log4j.appender.File.MaxFileSize = 10MB  
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志  
log4j.appender.File.Threshold = ALL  
log4j.appender.File.layout = org.apache.log4j.PatternLayout  
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n  


(五)编写服务端代码
1.利用逆向工程生成dao、实体类和mybatis映射文件,具体参考教程 https://blog.csdn.net/qq_33236248/article/details/80091214
2.在src/java/main文件夹下新建包com.java.zxf.dao、com.java.zxf.domain

3.将逆向工程生成的三个文件,分别拷贝到对应的目录下;(习惯上把mapper改为dao,可以不改,但如果改了,记住UserMapper.xml中的namespace也要做对应更改,不然会报Invalid bound statement (not found)的异常)

基于Maven搭建SSM框架_第17张图片

User.java,代码如下:
package com.java.zxf.domain;

public class User {
    private String id;

    private String userName;

    private String userGender;

    private String userBirthday;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id == null ? null : id.trim();
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName == null ? null : userName.trim();
    }

    public String getUserGender() {
        return userGender;
    }

    public void setUserGender(String userGender) {
        this.userGender = userGender == null ? null : userGender.trim();
    }

    public String getUserBirthday() {
        return userBirthday;
    }

    public void setUserBirthday(String userBirthday) {
        this.userBirthday = userBirthday == null ? null : userBirthday.trim();
    }
}
UserDao.java,代码如下 :
package com.java.zxf.dao;

import com.java.zxf.domain.User;

public interface UserDao {
    int deleteByPrimaryKey(String id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(String id);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);
}
UserMapper.xml,代码如下:



  
    
    
    
    
  
  
    id, user_name, user_gender, user_birthday
  
  
  
    delete from user
    where id = #{id,jdbcType=VARCHAR}
  
  
    insert into user (id, user_name, user_gender, 
      user_birthday)
    values (#{id,jdbcType=VARCHAR}, #{userName,jdbcType=VARCHAR}, #{userGender,jdbcType=VARCHAR}, 
      #{userBirthday,jdbcType=VARCHAR})
  
  
    insert into user
    
      
        id,
      
      
        user_name,
      
      
        user_gender,
      
      
        user_birthday,
      
    
    
      
        #{id,jdbcType=VARCHAR},
      
      
        #{userName,jdbcType=VARCHAR},
      
      
        #{userGender,jdbcType=VARCHAR},
      
      
        #{userBirthday,jdbcType=VARCHAR},
      
    
  
  
    update user
    
      
        user_name = #{userName,jdbcType=VARCHAR},
      
      
        user_gender = #{userGender,jdbcType=VARCHAR},
      
      
        user_birthday = #{userBirthday,jdbcType=VARCHAR},
      
    
    where id = #{id,jdbcType=VARCHAR}
  
  
    update user
    set user_name = #{userName,jdbcType=VARCHAR},
      user_gender = #{userGender,jdbcType=VARCHAR},
      user_birthday = #{userBirthday,jdbcType=VARCHAR}
    where id = #{id,jdbcType=VARCHAR}
  
4.在src/java/main文件夹下新建包com.java.zxf.service,用来存放service层代码;

5.在service包下新建UserService类,定义接口根据ID查询用户信息
package com.java.zxf.service;

import com.java.zxf.domain.User;

public interface UserService {
	/**
	 * 根据ID获取用户信息
	 */
	public User getUserById(String id);
}
6.在service包下新建com.java.zxf.service.impl包,用来存放service层实现的代码;

7.在impl包下新建UserServiceImpl类,实现UserService
package com.java.zxf.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.java.zxf.dao.UserDao;
import com.java.zxf.domain.User;
import com.java.zxf.service.UserService;

@Service
public class UserServiceImpl implements UserService {
	
	@Autowired
	private UserDao userDao;
	
	public User getUserById(String id) {
		return userDao.selectByPrimaryKey(id);
	}

}
8.在src/java/main文件夹下新建包com.java.zxf.controller,用来存放控制层代码;

基于Maven搭建SSM框架_第18张图片

9.在controller下新建UserController类,并编写控制层代码;
package com.java.zxf.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import com.java.zxf.domain.User;
import com.java.zxf.service.UserService;

/**
 * 用户控制器
 */
@Controller
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping(value = "/user", method = RequestMethod.GET)
    public ModelAndView login(@RequestParam(value="id",required=true) String id) {
        User user = userService.getUserById(id);

        ModelAndView mav = new ModelAndView();
        if (user == null) {
        	//跳转至失败页
        	mav.setViewName("fail");
            return mav;
        } else {
        	//跳转至成功页
        	mav.addObject("id", user.getId());
        	mav.addObject("name", user.getUserName());
        	mav.addObject("gender", user.getUserGender());
        	mav.addObject("birthday", user.getUserBirthday());
            mav.setViewName("success");
            return mav;
        }
    }
}


(六)编写前端代码
1.在WEB-INF目录下新建jsp文件夹,用来存放jsp页面

基于Maven搭建SSM框架_第19张图片

2.在jsp文件夹下分别新建失败页fail.jsp和成功页success.jsp
fail.jsp代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




失败页


	根据ID查询用户信息失败

success.jsp代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>




成功页


	根据ID查询用户信息成功
用户信息如下:
用户ID:${id}
用户名:${name}
用户性别:${gender}
用户生日:${birthday}


(七)构建项目
1.在项目上右键,选择run-maven build..,然后输入命令clean install

基于Maven搭建SSM框架_第20张图片

2.构建成功

基于Maven搭建SSM框架_第21张图片


(八)部署项目
1.在Servers标签中,新建一个server,可以点击链接,也可以右键New Server;如果没有Server标签,可以在菜单栏依次Window-Show View-Servers即可打开
配置tomcat

基于Maven搭建SSM框架_第22张图片

2.点击Next,将我们的项目添加到右侧

基于Maven搭建SSM框架_第23张图片

基于Maven搭建SSM框架_第24张图片

3.点击finish完成,server就创建完成了

4.在server上双击,打开相关配置,在Timeouts中将服务器启动和关闭时间改为300秒,因为如果项目太大,几十秒肯定启动不完,服务器就停了

基于Maven搭建SSM框架_第25张图片

5.右键server,点击publish发布(可能失败,多点几次)
6.右键server,点击start,启动服务器

基于Maven搭建SSM框架_第26张图片

启动成功


(九)访问项目
(在此之前,数据库已经有一条数据)

1.在浏览器地址栏输入 http://localhost:8080/SSMDemo/user?id=1
2.成功

基于Maven搭建SSM框架_第27张图片

3.再测一下失败页,在地址栏输入http://localhost:8080/SSMDemo/user?id=2

4.访问成功


(十)至此,基本的SSM框架搭建完毕。
源码附上: 点击打开链接

你可能感兴趣的:(教程)