SSM框架
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。
Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。
SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
mybatis
mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
SSM框架运行原理
页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。
SSM框架搭建一个简单的测试项目
1. 配置SpringMVC文件spring-mvc.xml
2. 配置SpringMVC文件spring-mvc.xml
3. 加入mybatis配置myBatis.cfg.xml
4.加入Log4j配置log4j.properties
### Console ###
log4j.appender.AA=org.apache.log4j.ConsoleAppender
log4j.appender.AA.Target=System.out
log4j.appender.AA.layout=org.apache.log4j.PatternLayout
log4j.appender.AA.layout.ConversionPattern=%p [%C{1}:%L] %m%n
### File ###
log4j.appender.D=org.apache.log4j.FileAppender
log4j.appender.D.File=D://logs/log.log
log4j.appender.D.Append=true
log4j.appender.D.Threshold=DEBUG
log4j.appender.D.layout=org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### root level ###
log4j.rootLogger=debug,AA
### spring level ###
log4j.logger.org.springframework=WARN
### your package level ###
log4j.logger.com.senchen=WARN
### your sub package level ###
log4j.logger.com.senchen.shop=debug
log4j.logger.apache.ibatis=debug
5.加入Spring配置app.xml
6.加入数据源文件dbConfig.properties
myDriver=com.mysql.jdbc.Driver
myUrl=jdbc:mysql://localhost:3306/elm
myUname=root
myPwd=root
7.项目配置web.xml加入Spring,Spring MVC
contextConfigLocation
classpath:app*.xml
org.springframework.web.context.ContextLoaderListener
xxyyzz
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
xxyyzz
*.do
8.创建控制器SsmTestController.java,调用业务层接口SsmTestService.java
package com.senchen.shop.controller;
import java.util.List;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.senchen.shop.entity.Users;
import com.senchen.shop.svs.SsmTestService;
@Controller
public class SsmTestController {
Logger log = Logger.getLogger( SsmTestController.class);
@Resource
SsmTestService tSvs;
//测试URL /ssm.do
@RequestMapping("/ssm")
public String m1(Model md){
log.debug("访问到spring mvc...");
List list = tSvs.findAllUser();
log.debug("\tspring 已注入service 查询出 " +( null!=list?list.size():-1 ));
md.addAttribute("datas", list);
return "ssm_test";
}//m1
}
9. 创建业务层接口SsmTestService.java,和业务层实现类SsmTestServiceImpl.java,业务层实现类调用数据访问层接口SsmTestDao.java
package com.senchen.shop.svs;
import java.util.List;
import org.springframework.stereotype.Service;
import com.senchen.shop.entity.Users;
public interface SsmTestService {
public List findAllUser()throws RuntimeException;
}
package com.senchen.shop.svs.impl;
import java.util.List;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;
import com.senchen.shop.dao.SsmTestDao;
import com.senchen.shop.entity.Users;
import com.senchen.shop.svs.SsmTestService;
@Service
public class SsmTestServiceImpl implements SsmTestService{
Logger log = Logger.getLogger( this.getClass());
@Resource
SsmTestDao tdao;
@Override
public List findAllUser() throws RuntimeException {
log.debug("\tspring 已注入tdao ");
return tdao.selectTest();
}
}
10. 建立数据访问层接口SsmTestDao.java
package com.senchen.shop.dao;
import java.util.List;
import com.senchen.shop.entity.Users;
public interface SsmTestDao {
public List selectTest()throws RuntimeException;
}
11. 建立实体类Users和其专属映射文件SsmTestMapper.xml
12.建立测试跳转的页面ssm_test.jsp在MVC定义的跳转路径WEB-INF/meto下,接收Controller存入的数据并显示
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
My JSP 'index.jsp' starting page
This is my JSP page.111
序号
姓名
手机号
邮箱
${st.count}
${u.uname}
${u.uphone}
${u.uemail}
13.在浏览器地址栏输入测试URL进行测试
控制台显示查到七行数据:
页面显示: