首页 > 程序开发 > 综合编程 > 其他综合 >

SSM框架整合分析

2016-04-02

SSM框架整合 开始学习SSM,现在来整理一下SSM框架整合。 SSM框架,Spring mvc + Spring + mybatis,先大概概括一下这三个框架。 关于这个SSM框架整合的学习,我是从一篇博客上学习的,现在是基于机子的

SSM框架整合

开始学习SSM,现在来整理一下SSM框架整合。
SSM框架,Spring mvc + Spring + mybatis,先大概概括一下这三个框架。
关于这个SSM框架整合的学习,我是从一篇博客上学习的,现在是基于机子的理解写的。Spring mvc 4.2.5.RELEASE

MVC框架,与Strusts2相比,首先比较好的一点就是能与Spring完美整合。除了学习用法,我个人觉得最重要的就是学习这个MVC框架的设计思想。

Spring 4.2.5.RELEASE

主要就是IoC(依赖注入),AOP(面向切面),目前我对于此也是一知半解,就不说什么了

mybatis 3.3.0

轻量级ORM框架


接下来,就是SSM框架的整合(使用的是MyEclipse,用Maven管理)

目录结构

图为完整目录结构。
在src/mian/resources目录下,一共有3个配置文件,spring-mybatis.xml包含spring,mybatis的配置,dispatcherServlet-servlet.xml为spring-mvc的配置,log4j2.xml为log4j2的配置,一个资源文件jdbc.properteis,包含关于基本的jdbc连接和数据源的属性

这里写图片描述


一、Maven所引入的jar包


    4.0.0
    MyWebDemo
    MyWebDemo
    0.0.1-SNAPSHOT
    war
    MyWebDemo
    
    
        
        UTF-8
        
        4.2.5.RELEASE
        
        3.3.0
        
        2.5
    
    
        
        
            javax
            javaee-api
            7.0
            provided
        
        
        
            org.glassfish.web
            javax.servlet.jsp.jstl
            1.2.2
        
        
        
            org.springframework
            spring-context
            ${spring.version}
        
        
        
            org.springframework
            spring-webmvc
            ${spring.version}
        
        
        
            org.springframework
            spring-jdbc
            ${spring.version}
        
        
        
            org.springframework
            spring-test
            ${spring.version}
        
        

        
        
            org.mybatis
            mybatis
            ${mybatis.version}
        
        
        
            org.mybatis
            mybatis-spring
            1.2.2
        
        

        
        
            mysql
            mysql-connector-java
            5.1.38
        
        
        
            commons-dbcp
            commons-dbcp
            1.2.2
        
        

        
        
            org.apache.logging.log4j
            log4j-api
            ${log4j.version}
        
        
            org.apache.logging.log4j
            log4j-core
            ${log4j.version}
        
        
        
            com.alibaba
            fastjson
            1.1.41
        
        

        
        
            com.fasterxml.jackson.core
            jackson-databind
            2.2.0
        

        
        
            junit
            junit
            4.11
            
            test
        
    
    
        
            
                maven-compiler-plugin
                2.3.2
                
                    1.7
                    1.7
                
            
            
                maven-war-plugin
                2.2
                
                    3.1
                    false
                
            
        
    


二、Spring与mybatis的整合

jdbc.properties

用于配置jdbc的基本属性,和数据源的属性
这里写图片描述
这里写图片描述


spring-mybatis.xml

spring与mybatis的完美整合
这里写图片描述



    
    

    
    
        
        
    
    
    
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
    

    
    
        
        
    

    
    
        
        
        
    

    
    
        
    


log4j2.xml的配置

为了方便调试,一般会使用日志记录,输出信息。
log4j的配置基本上是通用的。
这里用的是log4j2,我开始打算用properties配置的,但是貌似并不能。
当然也可以用1.x的版本。
这里写图片描述




    
    

        

            

        

    
    
    

        

            

        

    



三、JUnit测试

测试一下spring与mybatis的整合效果。
日后在开发中,完成相关的模块的工作,也应该先调试。

数据库表
这里写图片描述

pojo类

package com.example.pojo;

public class User {

    private String userId;
    private String userName;
    private String password;

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User [userId=" + userId + ", userName=" + userName
                + ", password=" + password + "]";
    }
}

接下来编写mybatis的mapper接口

package com.example.dao;

import java.util.List;

import org.apache.ibatis.annotations.Select;

import com.example.pojo.User;

/**
 * mybaits的mapper接口
 *
 */
public interface IUserDao {
    //每个方法对应相应的sql语句
    @Select("SELECT * FROM user WHERE userid = #{userid}")
    public User selectOneUserByUserId(String userid);

    @Select("SELECT * FROM user")
    public List selectUserList();
}

业务层接口

package com.example.service;

import java.util.List;

import com.example.pojo.User;

public interface IUserService {

    public User getUserByUserId(String userid);

    public List getAllUsers();
}

业务层实现类

package com.example.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.example.dao.IUserDao;
import com.example.pojo.User;

//Service对应业务层实现类,而且名字必须为"userService"
@Service("userService")
public class UserServiceImpl implements IUserService {

    //控制反转,使用该注释后,由spring容器获得该属性的实例化控制权
    @Resource
    private IUserDao userDao;

    @Override
    public User getUserByUserId(String userid) {
        // TODO Auto-generated method stub
        return this.userDao.selectOneUserByUserId(userid);
    }

    @Override
    public List getAllUsers() {
        // TODO Auto-generated method stub
        return this.userDao.selectUserList();
    }

}

测试

package myTest;


import javax.annotation.Resource;


import org.apache.logging.log4j.LogManager;
import org.apache.logging.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.example.pojo.User;
import com.example.service.IUserService;

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

    private static Logger logger = LogManager.getLogger(TestMyBatis.class);

    @Resource
    private IUserService userService;

    @Test
    public void test() {
        User user = userService.getUserByUserId("141542254");
        logger.info(JSON.toJSONString(user));
    }
}

测试结果
这里写图片描述
说一下,这里因为方便没有对密码做相关处理,实际开发中,最低限度都要用MD5处理密码,再存入数据库。不然明文存储密码,会被人打死。


四、整合Spring Mvc

配置dispathcerServlet-servlet.xml
这里写图片描述



    
    

    
    
        
            
                text/html;charset=UTF-8
            
        
    

    
    
    
    

    
    
    
        
            
                
                
            
        
    

    
    
        
        
        

        
        
        
    


web.xml配置



    MyWebDemo
    
        index.html
        index.htm
        index.jsp
        default.html
        default.htm
        default.jsp
    
    
    
        org.springframework.web.context.ContextLoaderListener
    
    
    
        contextConfigLocation
        classpath:spring-mybatis.xml
    
    
    
        dispatcherServlet
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:dispatcherServlet-servlet.xml
        
        
        1
        true
    
    
        dispatcherServlet
        /
    
    
    
        encodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        true
        
            encoding
            UTF-8
        

    
    
        encodingFilter
        /*
    


页面控制器的代码

package com.example.controller;

import java.util.List;

import javax.annotation.Resource;

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

import com.example.pojo.User;
import com.example.service.IUserService;

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

    @Resource
    private IUserService userService;

    @RequestMapping("/showUser")
    public String toIndex(Model model) {
        List users = userService.getAllUsers();
        model.addAttribute("users", users);
        //返回的是视图(一般为jsp)的名称
        return "showUser";
    }
}

View,jsp页面
这里写图片描述

<%@ page="" language="java" import="java.util.*" pageencoding="utf-8">
<%@ taglib="" uri="http://java.sun.com/jsp/jstl/core" prefix="c">
${user} <%@ page="" language="java" import="java.util.*" pageencoding="utf-8"><%@ taglib="" uri="http://java.sun.com/jsp/jstl/core" prefix="c">

测试结果
这里写图片描述


SSM框架的整合,基本上到此完成了,最后贴上一个简单的Spring mvc的工作流程图,加深理解,在配置时也更得心应手。
这里写图片描述

相关文章
最新文章
热点推荐