简单易学的SSM(Spring+SpringMVC+MyBatis)整合

SSM(Spring+SpringMVC+MyBatis)的整合:

具体执行过程:  1.用户在页面向后台发送一个请求

2.请求由DispatcherServlet 前端控制器拦截交给SpringMVC管理,SpringMVC讲这个请求传递给Controller层处理。

同时请求由Listener监听到交付给Spring,Spring建立IOC容器。

3.Controller层中会调用相应的Service层的方法处理业务逻辑。此时Service从上一步中建立好的IOC容器获取对象,然后获取

到Mapper接口中的代理类对象调用接口中的方法。

4.这个方法在对应的SQL映射文件mapper.xml中执行SQL语句,与数据库交互,获取到结果后返回给Service中的这个方法,

然后返回给Controller,再跳转到JSP页面显示给用户。

总结:SpringMVC                     与前台页面交互

Spring                             处理业务逻辑

MyBatis                          与数据库打交道

从下面的配置中不难发现:  SpringMVC的底层是由Listener实现的

Spring本质是一个Servler

这有助于大家理解SSM

SSM配置:

建立动态WEB项目,导入相应JAR包:

然后在web.xml中配置Spring和SpringMVC:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Spring-SpringMVC-MyBatis</display-name>
  <!-- 配置Spring -->
  <!--配置Listener监听浏览器发过来的请求  并动态创建IOC容器-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!-- 配置SpringMVC -->
  <!-- 配置前端控制器,拦截相应的请求 -->
  <servlet>
    <servlet-name>springDispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springDispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
   <!-- 配置过滤器来处理post乱码问题 -->
  <filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
   <!--  浏览器form表单只支持GET与POST请求,而DELETE、PUT等method并不支持,所以添加过滤器转化 -->
   <!-- 配置过滤器来将PUT请求转化为PUT DELETE请求 -->
  <filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
   <!-- 默认的访问文件 -->
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

对应的编辑SpringMVC的配置文件 springmvc.xml(注意这个xml的类型是 Spring Bean Configuration File)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    <!-- 配置扫描包,使SpringMVC只扫描Controller层 -->
    <context:component-scan base-package="com.neuedu" use-default-filters="false">
       <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
       <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
    </context:component-scan>
    <!-- 配置视图解析器 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!-- 可以处理静态资源 -->
    <mvc:default-servlet-handler />
    <!-- 标配,功能强大,诸多用处。例如使处理静态资源后RequestMapping继续能够使用等功能 -->
    <mvc:annotation-driven></mvc:annotation-driven>
</beans>

对应配置Spring的配置文件 spring.xml 文件类型同上,不过我们通常命名为applicationContext.xml 蕴含整个项目之意

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

    <!-- 扫描相关除去Controller的包 -->
    <context:component-scan base-package="com.neuedu" >
      <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
      <context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
    </context:component-scan>
    <!-- 加载外部属性文件 -->
    <context:property-placeholder location="classpath:jdbc.properties" />
    <!-- 配置c3p0数据源 -->
    <bean id="comboPooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
        <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="jdbcUrl" value="${jdbc.url}"></property>
    </bean>
    <!-- 配置事务管理 -->
    <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="comboPooledDataSource"></property>
    </bean>
    <!-- 开启基于注解的声明式事务 -->
    <tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>
    <!-- Spring与MyBatis整合 -->
    <!-- 配置SqlSession工厂 -->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="comboPooledDataSource"></property>
        <property name="configLocation" value="classpath:mybatis-config.xml" ></property>
    </bean>
    <!-- 扫描Mapper包 -->
    <bean  class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.neuedu.mapper"></property>
    </bean>
</beans>

这里有个jdbc.properties外部文件 连接数据库使用,读者视情况修改

jdbc.username:root
jdbc.password:123456
jdbc.driver:com.mysql.jdbc.Driver
jdbc.url:jdbc:mysql://localhost:3306/studentmanage

对应配置MyBatis的配置文件 mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
 <properties resource="jdbc.properties"></properties>
 <settings>
     <!-- 驼峰式命名 -->
     <setting name="mapUnderscoreToCamelCase" value="true"/>
 </settings>
</configuration>

如果想要在控制台打印日志 可添加log4j.xml 这个文件固定,请读者自行按需添加,在此不做赘述。

至此,配置完毕。然后在src下建立相应的包即可,一般来说

bean 通用实体类                                            -------------------------------------------   与数据库表对应的类

mapper 存放mapper接口和对应的.xml 文件  ------------------------------------------    由MyBatis 管理

service 处理业务逻辑                                    -------------------------------------------   由Spring管理

controller  与前端进行交互                             --------------------------------------------  由SpringMVC管理

好,废话不多说,开始项目(以一个简单的显示学生列表的方式展示SSM)

建数据库:

在bean包中建立Stu.java

在mapper包中建立接口StuMapper.java 和对应的StuMapper.xml  SQL映射文件

在sevice包的StuServce.java 中调用接口中的方法

在controller中StuController 中调用Service层的方法 然后讲结果返回给JSP页面显示

具体代码如下:

Stu.java:
package com.neuedu.bean;

public class Stu {
    private int ID;
    private String UserName;
    private String PassWord;
    public Stu() {
        super();
    }
    public Stu(int iD, String userName, String passWord) {
        super();
        ID = iD;
        UserName = userName;
        PassWord = passWord;
    }
    public Stu(String userName, String passWord) {
        super();
        UserName = userName;
        PassWord = passWord;
    }
    public int getID() {
        return ID;
    }
    public void setID(int iD) {
        ID = iD;
    }
    public String getUserName() {
        return UserName;
    }
    public void setUserName(String userName) {
        UserName = userName;
    }
    public String getPassWord() {
        return PassWord;
    }
    public void setPassWord(String passWord) {
        PassWord = passWord;
    }
    @Override
    public String toString() {
        return "Stu [ID=" + ID + ", UserName=" + UserName + ", PassWord=" + PassWord + "]";
    }

}
StuMapper.java:
package com.neuedu.mapper;

import java.util.List;

import com.neuedu.bean.Stu;

public interface StuMapper {
    public List<Stu> getStuList();
}
StuMapper.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.neuedu.mapper.StuMapper">
    <select id="getStuList" resultType="com.neuedu.bean.Stu">
        select * from stu
    </select>

</mapper>
StuService.java:
package com.neuedu.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.neuedu.bean.Stu;
import com.neuedu.mapper.StuMapper;
@Service
public class StudentService {

    @Autowired
    private StuMapper mapper;

    public List<Stu> getStuList() {
        return mapper.getStuList();
    }
}
StuController.java:
package com.neuedu.controller;

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.neuedu.bean.Stu;
import com.neuedu.service.StudentService;
@Controller
public class StuController {
    @Autowired
    private StudentService studentService;
    @RequestMapping(value="/getStuList")
    public String getStuList(Map<String,Object> map){
        List<Stu> list=studentService.getStuList();
        map.put("stulist", list);
        return "StudentList";
    }
}
StudentList.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery.min.js"></script>
<title>学生信息展示</title>
</head>
<body>
<h1 align="center">学生信息</h1>
<div align="center">
<form action="${pageContext.request.contextPath}/queryStu" method="post">
<input type="text" name="queryname" placeholder="请输入将要查找的姓名" >
<input type="submit" value="查询"/>
 </form>
 </div>
<table border="1" align="center" width="50%">
<tr>
            <th>姓名</th>
            <th>密码</th>
            <th colspan="2">操作</th>
</tr>
<c:forEach items="${stulist}" var="stu">
<tr>
            <td>${stu.userName}</td>
            <td>${stu.passWord}</td>
            <td><a href="${pageContext.request.contextPath}/deleteStu?id=${stu.ID}">删除</a></td>
            <td><a href="${pageContext.request.contextPath}/toUpdateStu?id=${stu.ID}">修改</a></td>
</tr>
</c:forEach>
<tr>
     <td colspan="5" align="center" ><a href="${pageContext.request.contextPath}/toAddStu">添加</a> </td>
 </tr>
</table>
<br/>
</body>
</html>

页面显示:

 第一次写这么多,有什么错误的地方欢迎批评指正!

时间: 2024-10-07 06:07:06

简单易学的SSM(Spring+SpringMVC+MyBatis)整合的相关文章

ssm之spring+springmvc+mybatis整合初探

1.基本目录如下  2.首先是向lib中加入相应的jar包  3.然后在web.xml中加入配置,使spring和springmvc配置文件起作用. <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/

SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释

SSM:spring+springmvc+mybatis框架中的XML配置文件功能详细解释 2016-04-14 23:40 13030人阅读 评论(2) 收藏 举报 分类: SSM(7) 这几天一直在整合SSM框架,虽然网上有很多已经整合好的,但是对于里面的配置文件并没有进行过多的说明,很多人知其然不知其所以然,经过几天的搜索和整理,今天总算对其中的XML配置文件有了一定的了解,所以拿出来一起分享一下,希望有不足的地方大家批评指正~~~ 首先   这篇文章暂时只对框架中所要用到的配置文件进行解

SSM(Spring + Springmvc + Mybatis)框架面试题

JAVA SSM框架基础面试题https://blog.csdn.net/qq_39031310/article/details/83050192 SSM(Spring + Springmvc + Mybatis)框架面试题 一.Spring面试题 1.Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成. 两大核心:1.IOC/DI(控制反转/依赖注入) :把dao依赖注入到service层,service层反转给action

Spring+SpringMVC +MyBatis整合配置文件案例66666

Spring+SpringMVC +MyBatis整合配置文件案例 标签: springspringmvcmybatismvcjava 2017-04-13 19:12 228人阅读 评论(1) 收藏 举报 分类: java_javaSE(2) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] Spring+SpringMVC +MyBatis整合配置文件案例 针对spring/SpringMVC/MyBatis三个框架的整合有很多的方式,经过最近的学习我来总结一下其配置文

SSM Spring SpringMVC Mybatis框架整合Java配置完整版

以前用着SSH都是老师给配好的,自己直接改就可以.但是公司主流还是SSM,就自己研究了一下Java版本的配置.网上大多是基于xnl的配置,但是越往后越新的项目都开始基于JavaConfig配置了,这也是写此文章的原因.不论是eclipse还是myeclipse 都没有集成mybatis的相关组件,Spring也没有对其进行兼容,所以说我们会用到一些mybatis提供的核心jar包.下面先看一下我们的项目结构,我先自建了一个集成spring4.1的 ssm web项目(红色箭头指向注意删除web.

2016.5.19 SSM 框架(一) Spring SpringMVC Mybatis 整合思路

前言 : 内容 依然是根据 传智播客 燕青老师 视频 及自己理解所写 1. 总体框架图 2.理解 可能从后往前更好理解一点 底层: 数据库    mysql  sqlserver oracle 等等 持久层(DAO):                   ---调用数据库   提供mapper接口 持久层 生成 Mapper接口(DAO接口), 提供访问数据库的方法和数据. 业务层(Service):                --- 调用 mapper 接口     提供Service接口

使用intellij idea搭建MAVEN+SSM(Spring+SpringMVC+MyBatis)框架

基本概念 使用SSM(Spring,SpringMVC和Mybatis) 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅限于服务器

spring+springMVC+mybatis整合并使用redis做缓存

1.用idea 构建一个maven 的web项目 点击下一步 继续下一步 选着maven home directory 自己的maven 安装目录,全选下一步,等一分钟就OK了 2.配置pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h

Spring+SpringMvc+Mybatis整合注意事项

web.xml代码如下 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/n

SSM(Spring+SpringMVC+MyBatis)框架整合

1.项目结构: 2.相关jar包: 3.相关配置文件: (1)web.xml配置文件: <?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&q