JavaWeb从新手到入门(二)Intellj Idea 2017下的SSM框架整合

参考:《传智播客-淘淘商城》

一、SSM框架

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、SpringMVC、MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架。SSM的整合一般是开发开始的基础。本篇博客将在上一篇的基础上对聚合工程进行SSM整合,搭建JavaWeb开发的骨架,步骤分为如下:

一、准备数据

1. 准备Mysql数据

2. 使用Mybatis逆向生成pojo和mapper代码。

二、整合mybatis和spring
1. 配置数据源和数据库连接池
2. 配置SqlSessionFactory(mybatis和spring整合包中的)
3. 配置mapper文件的扫描器。
4. 配置事务管理器和切面

三、整合spring和spring-mvc
1. 配置注解驱动
2 .配置一个视图解析器。
3 .包扫描器,@Controller注解

四、配置Web.xml
1. 配置springmvc的前端控制器
2. Spring容器初始化的listener。

五、测试

1. 便携Service和ServiceImp

2. 测试

二、准备数据

1. Mysql数据导入

在JavaWeb项目中一般数据库设计在后台设计之前完成,需要明确数据库和数据表,在本博客中使用mysql数据库,项目使用参考项目中的sql脚本,使用SQLyog导入SQL脚本完成数据导入。

JavaWeb从新手到入门(二)Intellj Idea 2017下的SSM框架整合_第1张图片

JavaWeb从新手到入门(二)Intellj Idea 2017下的SSM框架整合_第2张图片

JavaWeb从新手到入门(二)Intellj Idea 2017下的SSM框架整合_第3张图片

数据导入成功后可以在SQLyog中看到当前的表,下一步使用Mybatis逆向生成所有表对应的映射和对象文件。

2. Mybatis逆向工程

项目使用Mybatis逆向生成后端需要使用的pojo对象和mapper映射文件,依托工程ality-manager-pojo实现,其POM文件如下:



    
        ality-manager
        priv.zenhobby
        1.0-SNAPSHOT
    
    4.0.0

    ality-manager-pojo

    
        
            
            org.mybatis.generator
            mybatis-generator-maven-plugin
            1.3.2
            
                src/main/resources/generatorConfig.xml
                true
                true
            
            
                
                    Generate MyBatis Artifacts
                    
                        generate
                    
                
            
            
                
                    org.mybatis.generator
                    mybatis-generator-core
                    1.3.2
                
                
                    mysql
                    mysql-connector-java
                    5.1.6
                    runtime
                
            
        
    
    
POM文件中配置另一个名为“org.mybatis.generator”的plugin,在标签中定义了相应动作,因此在Idea的Maven project中可以看到Plugins中显示操作mybatis:generate:

JavaWeb从新手到入门(二)Intellj Idea 2017下的SSM框架整合_第4张图片
POM配置完成后需要配置generator使用的配置文件,放置在POM中指定的:src/main/resources/generatorConfig.xml,该文件内容如下:





	
		
			
			
		
		
		
		

		
		
			
		

		
		
			
			
			
			
		
        
		
			
			
		
		
		
			
			
		
		
		
之后直接使用maven命令即可在D:\JavaProjects\alitymanager\alitymanagerpojo\src目录下生成指定的priv.ality.pojo和priv.ality.mapper包,然后把包拷贝到需要用的位置即可完成。

注意:

1. 生成的priv.ality.pojo中的各个类可能会带有多个Group ID,需要检查一下。

2. pojo包下只包含所有的pojo类,但mapper下包含Mapper的Java类和Mapper的XML文件,后者中包含了SQL语句,最好拷贝到能够打包的路径下(比如resoureces文件夹下),否则需要在POM文件中额外映射,本博客将mapper.xml文件拷贝到了“D:\JavaProjects\alitymanager\alitymanagerweb\src\main\resources\mapping”下,并且在Spring-mybatis的配置中指明了路径。

如下是逆向生成的文件:

JavaWeb从新手到入门(二)Intellj Idea 2017下的SSM框架整合_第5张图片JavaWeb从新手到入门(二)Intellj Idea 2017下的SSM框架整合_第6张图片

3. xml使用了追加模式,多次生成会导致*Mapper.xml追加到文件上,在Tomcat启动时失败,所以每次生成都要删除上次生成的产物。

三、整合mybatis和spring

spring和mybatis的整合放在ality-manager-web项目中完成,完成之后的文件如下:

JavaWeb从新手到入门(二)Intellj Idea 2017下的SSM框架整合_第7张图片

其中spring-mybatis.xml中包含了mybatis和spring的整合配置。依次给出配置文件的代码:

jdbc.properties:

jdbc.driverLocation=D:\\Java\\maven\\localRepository\\mysql\\mysql-connector-java\\5.1.32\\mysql-connector-java-5.1.32.jar
jdbc.driverClasss=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/taotao?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root

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=[%p][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%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][%t][%d{yyyy-MM-dd HH\:mm\:ss}][%C] - %m%n


spring-mybatis.xml




    

    
    

    
    
        
        
        
        
        
        
    

    
    
        
        
        
    

    
    
        
        
    


    
    
        
    
    
    
        
            
            
            
            
            
            
            
            
            
            
        
    
    
    
        
    
    
    
需要注意mapper需要和配置中的路径保持一致。

四、整合Spring和Springmvc

Springmvc和Spring的整合也在ality-manager-web中完成,

JavaWeb从新手到入门(二)Intellj Idea 2017下的SSM框架整合_第8张图片

spring-mvc.xml的代码如下:




    
    
    
    
    
        
            
                text/html;charset=UTF-8
            
        
    
    
    
        
            
                 
            
        
    

    
    
        
        
    

五、配置Web.xml

web.xml位于ality-manager-web工程中,其代码如下:



    ality-manager
    
        index.html
        index.jsp
    
    
    
        contextConfigLocation
        classpath:spring-mybatis.xml
    

    
        log4jConfigLocation
        classpath:log4j.properties
    

    
    
        encodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
    
    
        encodingFilter
        /*
    

    
    
        org.springframework.web.context.ContextLoaderListener
    

    
    
        org.springframework.web.util.IntrospectorCleanupListener
    


    
    
        ality-manager
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:spring-mvc.xml
        
        1
    
    
        ality-manager
        /
    

    
    
        15
    

六、测试

如上即完成了SSM框架的整合,下面通过一个查询商品信息的Service测试下框架是否正确。

1. 添加controller

在ality-manager-web项目中添加priv.ality.controller包,添加一个ItemController类,

JavaWeb从新手到入门(二)Intellj Idea 2017下的SSM框架整合_第9张图片

其代码如下:

package priv.ality.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import priv.ality.pojo.TbItem;
import priv.ality.service.ItemService;

@Controller
public class ItemController {
    @Autowired
    private ItemService itemService;

    @RequestMapping("/item/{itemId}")
    @ResponseBody
    private TbItem getItemById(@PathVariable Long itemId) {
        TbItem item = itemService.getItemById(itemId);
        return item;
    }
}
通过注解方式定义了一个"/item/{itemId}"的服务,并使用传入的itemId查询数据库,获取商品信息后返回。

2. 添加服务

在ality-manager-service项目中添加priv.ality.service包,添加一个ItemService接口,并添加其实现类:

JavaWeb从新手到入门(二)Intellj Idea 2017下的SSM框架整合_第10张图片

ItemService:

package priv.ality.service;

import priv.ality.pojo.TbItem;

public interface ItemService {
    TbItem getItemById(Long itemId);
}

ItemServiceImp:

package priv.ality.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import priv.ality.mapper.TbItemMapper;
import priv.ality.pojo.TbItem;
import priv.ality.service.ItemService;

/**
 * 商品查询Service
 */
@Service
public class ItemServiceImpl implements ItemService {
    @Autowired
    private TbItemMapper itemMapper;

    @Override
    public TbItem getItemById(Long itemId) {
        return itemMapper.selectByPrimaryKey(itemId);
    }
}

3. 配置Tomcat

Idea中的Tomcat在File-Settings-Build , Execution, Deployment选项下的Application Servers中配置(Community Edition下找不到该选项):

JavaWeb从新手到入门(二)Intellj Idea 2017下的SSM框架整合_第11张图片

然后在Run/Debug 窗口中的Deploy选项卡载入ality-manager-web项目中打包出的war包:

JavaWeb从新手到入门(二)Intellj Idea 2017下的SSM框架整合_第12张图片

4. 启动测试

启动测试:


在SQLyog中查询当前存在的商品信息:

JavaWeb从新手到入门(二)Intellj Idea 2017下的SSM框架整合_第13张图片

将itemId作为参数,输入地址http://localhost:8080/item/536563,结果如下:


至此SSM框架已经整合成功。项目地址:Zenhobby/alitymanager



你可能感兴趣的:(JavaWeb)