1、基本概念

1.1、Spring

        Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

1.2、SpringMVC  

        Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

1.3、MyBatis

       MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

 

2.需要的jar包

   需要的jar包主要分为以下几类:

      1.mysql数据库驱动包以及数据库连接池相关包

      2.mybatis框架包和mybatis+spring框架整合包

      3.spring包

jar包如下图所示:

3.配置school-mybatis.xml

      该配置文件默认存放在src目录下,school-mybatis.xml具体配置如下所示:

      
    
       
      
      
      
          
      
  
      
          
          
          
          
        
        
        
        
        
        
        
        
        
        
        
         
      
    
      
      
          
          
          
      
  
      
      
          
          
      
  
      
      
          
        
         

ps:jdbc.properties文件内容如下所示:

 

4.配置school-servlet.xml文件

  school-servlet.xml文件中主要配置spring框架的信息,具体如下所示:

  



      
      
      
      
      
      
      
          
          
      
      
      

        

 

 5.配置web.xml,整合SSM框架

   web.xml文件如下所示:

  


 
  
  
     school
     org.springframework.web.servlet.DispatcherServlet
  
  
     school
     /
  
  
 
  
  
    contextConfigLocation
    classpath:school-mybatis.xml   
  
  
    
  
    org.springframework.web.context.ContextLoaderListener
  
  

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

 

6.项目整体框架

6.1 dao包介绍

   主要是数据库操作(基于mybatis),分别是一个dao接口和一个dao类。

   IUserDao接口:

package cn.wallance.dao;import java.util.List;import cn.wallance.domain.User;public interface IUserDao {    public abstract List selectAll();
}

  IUSerDaoImpl类:

package cn.wallance.dao;import java.util.List;import javax.annotation.Resource;import org.apache.ibatis.session.SqlSessionFactory;import org.mybatis.spring.support.SqlSessionDaoSupport;import org.springframework.stereotype.Repository;import cn.wallance.domain.User;

@Repository("userDao")public class UserDaoImpl extends SqlSessionDaoSupport implements IUserDao {
    
    
    @Resource    public void setSuperSessionFactory(SqlSessionFactory sessionFactory){        this.setSqlSessionFactory(sessionFactory);
    }    
    
    public List selectAll() {        // TODO Auto-generated method stub
        List users = this.getSqlSession().selectList("getUser");        return users;
    }

}

   6.2 service包

    IUSerService接口:

package cn.wallance.service;import java.util.List;import cn.wallance.domain.User;public interface IUserService {    public abstract List selectAll();

}

  UserServiceImpl类:

package cn.wallance.service;import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Service;import cn.wallance.dao.IUserDao;import cn.wallance.domain.User;


@Service("userService")public class UserServiceImpl implements IUserService {    private IUserDao userDao;    
    
    public IUserDao getUserDao() {        return userDao;
    }

    @Resource    public void setUserDao(IUserDao userDao) {        this.userDao = userDao;
    }


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

}

    6.3 mapping包

  该包下主要是mapper文件

  usermapper.xml映射文件如下所示:


    
        select * from users    

    6.4 domain包

      该包下主要是实体类。

     USer类如下所示:

package cn.wallance.domain;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;


@Entitypublic class User {    private int id;    private String name;    private int age;    
    public User(){
    }    
    public User(int id, String name, int age) {        super();        this.id = id;        this.name = name;        this.age = age;
    }
    
    @GeneratedValue
    @Id    public int getId() {        return id;
    }    public void setId(int id) {        this.id = id;
    }    
    
    public String getName() {        return name;
    }    public void setName(String name) {        this.name = name;
    }    public int getAge() {        return age;
    }    public void setAge(int age) {        this.age = age;
    }
    
    

}

   6.5.web包

    该包下主要是contrller类: 

package cn.wallance.web;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 org.springframework.web.bind.annotation.RequestMethod;import cn.wallance.domain.User;import cn.wallance.service.IUserService;


@Controllerpublic class HomeController {    private IUserService userService;    
    
    public IUserService getUserService() {        return userService;
    }

    @Resource    public void setUserService(IUserService userService) {        this.userService = userService;
    }


    @RequestMapping(value="/",method=RequestMethod.GET)    public String home(Model model){
        List users = userService.selectAll();
        model.addAttribute("users", users);        return "home";
    }

}

   6.6 Jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
  
    ">
    
    My JSP 'index.jsp' starting page
    
    
        
    
    
    
  
  
  
    
       
        
        
        
       
       
       
       
       
       
       
       
    
IDNAMEAGE
${user.id}${user.name}${user.age}
  

 

7.项目实际运行效果

至此,SSM框架整合工作已经全部完成,大家可以在此基础上进行进一步的功能扩展!

 

写在最后:

     代码GitHub地址:https://github.com/bywallance01/SSM_School_System