SSM框架整合(Spring + SpringMVC + Mybatis + Maven + IDEA)

【学习背景】

最近学习的项目是SSM框架,即Spring、SpringMVC和Mybatis。之前实习的项目底层用的就是mybatis,但那时为了保证团队开发进度,只顾着开发,并且项目框架、所用到的技术都是建立在已有的基础上,而此次框架的整合,是想亲手搭建一次,做出个小demo。所以,这一次的实践既有基础,也有挑战。

【学习过程】

IDEA开发工具用的不是很多,所以自己也是有机会就尝试着用用它。这次搭建用的就是IDEA开发,其中也遇

到了些Eclipse中没有的问题,会在后面写到。

一. 创建Maven项目

这个过程很简单,和Eclipse创建Maven项目基本上是一样的,跟着提示一步步走下去即可。

二. 完善项目结构

除了mybatis和SpringMVC基本的代码结构之外,包含两个配置文件,分别是

spring-mybatis.xml,即spring与mybatis的整合;另一个是spring-mvc.xml,即SpringMVC的配置文件。此外还有两个资源文件,jdbc.properties和log4j.properties,连接数据库和记录日志所用。

三. maven添加包依赖

利用maven进行包管理,就不用再像之前那样,一个个去手动添加需要的jar包,直接在pom文件中引入即可。

pom.xml:



    4.0.0

    com.ssm
    SSM
    1.0-SNAPSHOT
    war
    
        
        4.1.3.RELEASE
        
        3.2.8
        
        1.6.4
        1.2.17
    

    
        
            junit
            junit
            4.11
            
            test
        
        
        
            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
        
        
        
            javax
            javaee-api
            7.0
        
        
        
            mysql
            mysql-connector-java
            5.1.30
        
        
        
            commons-dbcp
            commons-dbcp
            1.2.2
        
        
        
            jstl
            jstl
            1.2
        
        
        
        
            log4j
            log4j
            ${log4j.version}
        


        
        
            com.alibaba
            fastjson
            1.1.41
        


        
            org.slf4j
            slf4j-api
            ${slf4j.version}
        

        
            org.slf4j
            slf4j-log4j12
            ${slf4j.version}
        
        
        
        
            org.codehaus.jackson
            jackson-mapper-asl
            1.9.13
        
        
        
            commons-fileupload
            commons-fileupload
            1.3.1
        
        
            commons-io
            commons-io
            2.4
        
        
            commons-codec
            commons-codec
            1.9
        
    

    
    
        
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                2.2
                
                    8080
                    /
                    UTF-8
                
            
        
    

最近接触maven项目比较多了,也遇到了一些pom文件报错的问题,主要是依赖的包找不到。这就和maven仓库管理的机制有关系了,一个是本地、一个是私服,这和配置maven的setting文件有关,两个仓库都找不到的话,就需要自己需要下载相关的jar包,然后执行相关命令保存到本地仓库即可。

四. spring与mybatis整合

1. 建立jdbc.properties文件:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_ssm?characterEncoding=utf-8
username=root
password=111111
#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000
     

2.  建立spring-mybatis.xml配置文件,主要配置自动扫描、自动注入和配置数据库:


  
      
      
      
      
          
      
  
      
          
          
          
          
          
          
          
          
          
          
          
          
          
          
      
  
      
      
          
          
        
      
  
      
      
          
          
      
  
      
      
          
      
  
  

3.  建立log4j配置,主要是方便调试,用日志输出信息:

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  

五. junit测试

以上过程我们便完成了spring和mybatis的整合,下面就用单元测试来试试是否成功。

mybatis是可以利用工具生成一套底层代码的,基本的增删改查都可以满足。

具体操作参见博客:【Mybatis】自动生成代码工具

					

如上图,项目中User、UserMapper.xml、UserMapper都是工具自动生成的,不需要做任何改动。

Service添加根据id查询方法:


package com.ssm.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.ssm.dao.UserMapper;
import com.ssm.pojo.User;
import com.ssm.service.UserService;

@Service
public class UserServiceImpl implements UserService{

	@Resource
	private UserMapper userMapper;
	
	public User getUserById(int userId) {
		return this.userMapper.selectByPrimaryKey(userId);
	}

}


package com.ssm.service;

import com.ssm.pojo.User;

public interface UserService {
	public User getUserById(int userId);
}	

建立测试类:

在src/test/java中建立测试类,TestMybatis代码如下:

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.alibaba.fastjson.JSON;
import com.ssm.pojo.User;
import com.ssm.service.UserService;

@RunWith(SpringJUnit4ClassRunner.class)     //表示继承了SpringJUnit4ClassRunner类
@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})  
public class TestMyBatis {
	private static Logger logger = Logger.getLogger(TestMyBatis.class);  

    @Resource  
    private UserService userService = null;  

    @Test  
    public void test1() {  
        User user = userService.getUserById(1);  
        System.out.println(user.getUserName());  
        logger.info("值:"+user.getUserName());
        logger.info(JSON.toJSONString(user));  
    }  
}		

spring和mybatis整合测试通过结果:

SSM框架整合(Spring + SpringMVC + Mybatis + Maven + IDEA)_第1张图片

	六. Spring与Mybatis整合中遇到的问题

1. 数据库连接不上,原因是jdbc配置的问题。因为配置的那些值,如com.mysql.jdbc.Driver结尾

处多输入了一个空格,其它的配置也有相同的问题。这个问题也是花了不少时间,一直是认为没有问题的,可是死活就是连接不上。最后上网查看大家的解决方案,才发现了这一问题。

2. 配置文件的扫描问题。在spring-mybatis的配置文件中,会有需要扫描spring-mybatis.xml文

件的代码,最初的写法是:

	

这在Eclipse中没有问题,在IDEA中就有问题了。解决的办法便是在resources文件夹下多建立一个

mapper文件夹,并设置为resources类型,将mapper.xml文件放此处,再修改扫描路径即可解决。

  

路径修改:

		

七. SpringMVC整合

配置spring-mvc.xml:

  
  
      
      

    
    

    

      
      
      
          
          
          
      
      
      
        
          
            
          
            
          
            
       
  

配置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  
      
  

至此,三大框架就整合完了。下面就继续测试一下,新建一个User.jsp页面,通过controller将查

询到的用户名显示:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




SSM框架整合


	${user.userName},你好!


建立UserController类:

package com.ssm.controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.ssm.pojo.User;
import com.ssm.service.UserService;

@Controller
@RequestMapping("/user")
public class UserController {

	@Resource
	private UserService userService;
	
	@RequestMapping("/QueryUser")
	public String toIndex(HttpServletRequest request,Model model){  
        int userId = Integer.parseInt(request.getParameter("id"));  
        User user = this.userService.getUserById(userId);  
        model.addAttribute("user", user);  
        return "User";  
	}
}

遇到的问题:

SSM框架整合(Spring + SpringMVC + Mybatis + Maven + IDEA)_第2张图片

以上代码,在Eclipse中没有任何问题提示,而在idea中便会提示到已经过时,在部署项目的时候

就会报错,所以,也是做了对应的替换。

		

八. IDEA部署Maven web项目

最简单的方法就是将该项目执行maven命令,打成war包,然后将war包直接拷贝到tomcat的webapps

目录下,便可直接访问。

1. 执行maven install,生成对应的war包

				

下图中标出的便是war包的路径:

SSM框架整合(Spring + SpringMVC + Mybatis + Maven + IDEA)_第3张图片

按controller中的配置,输入对应的地址:http://localhost:8080/SSM/user/QueryUser?id=1

查看结果:

			

至此,三大框架的整合也测试完成了。

【学习感受】

整个搭建过程遇到了很多问题,从开发工具的选择,到项目的一点点整合、测试,到最后的项目部署,各方

面都不是非常顺利的,但这样的过程还是少不了的,平时的积累,实践的经验,才能从一点都不熟悉,到一点点熟

悉。


你可能感兴趣的:(【JAVA】,#)