SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)
SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)使用SSM(Spring、SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方。
之前没有记录SSM整合的过程,这次刚刚好基于自己的一个小项目重新搭建了一次,而且比项目搭建的要更好一些。
以前解决问题的过程和方法并没有及时记录,以后在自己的小项目中遇到我再整理分享一下。
这次,先说说三大框架整合过程。
个人认为使用框架并不是很难,关键要理解其思想,这对于我们提高编程水平很有帮助。
不过,如果用都不会,谈思想就变成纸上谈兵了!!!先技术,再思想。
实践出真知。
(可通过图片水印查看博客地址)1、基本概念1.1、SpringSpring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。
它是为了解决企业应用开发的复杂性而创建的。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
然而,Spring的用途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
1.2、SpringMVCSpring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。
Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
1.3、MyBatisMyBatis 本是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、开发环境搭建如果需要,参看之前的博文:/zhshulin/article/details/307798733、Maven Web项目创建如果需要,参看之前的博文:/zhshulin/article/details/379217054、SSM整合下面主要介绍三大框架的整合,至于环境的搭建以及项目的创建,参看上面的博文。
这次整合我分了2个配置文件,分别是spring-mybatis.xml,包含spring和mybatis的配置文件,还有个是spring-mvc的配置文件,此外有2个资源文件:jdbc.propertis和log4j.properties。
完整目录结构如下:使用框架都是较新的版本:Spring 4.0.2 RELEASESpring MVC 4.0.2 RELEASEMyBatis 3.2.62.1、Maven引入需要的JAR包为了方便后面说的时候不需要引入JAR包,我这里直接给出所有需要的JAR包,这都是基本的JAR包,每个包的是干什么的都有注释,就不再多说了。
pom.xml<properties><!-- spring版本号 --><spring.version>4.0.2.RELEASE</spring.version><!-- mybatis版本号 --><mybatis.version>3.2.6</mybatis.version><!-- log4j日志文件管理包版本 --><slf4j.version>1.7.7</slf4j.version><log4j.version>1.2.17</log4j.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><!-- 表示开发的时候引入,发布的时候不会加载此包--><scope>test</scope><!-- spring核心包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-oxm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!-- mybatis核心包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version> </dependency><!-- mybatis/spring包 --><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.2</version></dependency><!-- 导入java ee jar 包 --><dependency><groupId>javax</groupId><artifactId>javaee-api</artifactId><version>7.0</version></dependency><!-- 导入Mysql数据库链接jar包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.30</version></dependency><!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.2.2</version></dependency><!-- JSTL标签类 --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- 日志文件管理包 --><!-- log start --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><!-- 格式化对象,方便输出日志 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.1.41</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency><!-- log end --><!-- 映入JSON --><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency><!-- 上传组件包 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.9</version></dependency></dependencies>2.2、Spring与MyBatis的整合所有需要的JAR包都引入以后,首先进行Spring与MyBatis的整合,然后再进行JUnit测试,先看一个项目结构图:2.2.1、建立JDBC属性文件jdbc.properties(文件编码修改为utf-8)2.2.2、建立spring-mybatis.xml配置文件这个文件就是用来完成spring和mybatis的整合的。
SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法
SpringMVC+Spring+Hibernate框架整合原理,作⽤及使⽤⽅法SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使⽤spring MVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎原理:SpringMVC:1.客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller3.Controller调⽤业务逻辑处理后,返回ModelAndView4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图5.视图负责将结果显⽰到客户端Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们中的类,当然也包括service dao⾥⾯的),有了这个机制,我们就不⽤在每次使⽤这个类的时候为它初始化,很少看到关键字new。
另外spring的aop,事务管理等等都是我们经常⽤到的。
Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。
mybatis的操作都是围绕⼀个sqlSessionFactory实例展开的。
mybatis通过配置⽂件关联到各实体类的Mapper⽂件,Mapper⽂件中配置了每个类对数据库所需进⾏的sql语句映射。
在每次与数据库交互时,通过sqlSessionFactory拿到⼀个sqlSession,再执⾏sql命令。
使⽤⽅法:要完成⼀个功能:1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。
2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进⾏的那些操作,⽐如 insert、selectAll、selectByKey、delete、update等。
ssm框架流程
ssm框架流程SSM框架流程。
SSM框架是指Spring+SpringMVC+MyBatis三大框架的整合,是目前Java Web开发中非常流行的一种架构模式。
它将Spring的IoC容器和AOP特性、SpringMVC的MVC模式以及MyBatis的持久层框架进行了整合,可以很好地解决传统Java EE开发中的各种问题,提高开发效率和代码质量。
在SSM框架中,Spring负责管理对象的生命周期和配置,SpringMVC负责请求的分发和视图的渲染,MyBatis负责数据库的访问和操作。
下面将详细介绍SSM框架的流程。
首先,我们需要在项目中引入SSM框架所需的依赖包。
在Maven项目中,我们可以在pom.xml文件中添加对应的依赖,然后通过Maven进行依赖的下载和管理。
在引入依赖包之后,我们需要配置web.xml文件,配置DispatcherServlet和ContextLoaderListener,以及Spring和MyBatis的配置文件位置。
其次,我们需要编写Spring的配置文件。
在Spring的配置文件中,我们可以配置数据源、事务管理器、扫描包等信息。
数据源是指数据库的连接信息,事务管理器是指事务的管理方式,扫描包是指Spring需要扫描的包路径,以加载对应的Bean。
在Spring的配置文件中,还可以配置AOP、注解驱动等特性,以及其他Bean的定义和依赖注入。
然后,我们需要编写SpringMVC的配置文件。
在SpringMVC的配置文件中,我们可以配置HandlerMapping、HandlerAdapter、ViewResolver等信息。
HandlerMapping是指URL和Controller的映射关系,HandlerAdapter是指处理器适配器,用于执行Controller中的方法,ViewResolver是指视图解析器,用于解析视图的位置和类型。
在SpringMVC的配置文件中,还可以配置拦截器、文件上传、异常处理等功能。
08ssm三大框架整合以前步骤
08ssm三⼤框架整合以前步骤spring framework Ioc容器spring mvc web项⽬mybatis orm持久层框架 ssm 整合---------------------------------------------------------------1、maven web项⽬srcmainjava 类源码路径resources 资源配置⽂件webappimgcssjsWEB-INFweb.xml web项⽬的配置⽂件index.jsp 项⽬⾸页testjava 测试源码路径pom.xml 项⽬配置⽂件<!-- web servlet --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- spring --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.14</version><scope>provided</scope></dependency><!-- springmvc --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><!-- mybatis核⼼包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><!-- mybatis/spring包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.1</version></dependency><!-- 导⼊dbcp的jar包,beans.xml中配置数据库 --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><!-- 导⼊Mysql数据库链接jar包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.40</version></dependency><!-- springmvc ⽂件上传jar包 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.2</version></dependency></dependencies><build><finalName>${project.artifactId}</finalName><sourceDirectory>src/main/java</sourceDirectory><testSourceDirectory>src/test/java</testSourceDirectory> <resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include><include>**/*.properties</include></includes></resource><resource><directory>src/main/resources</directory><includes><include>**/*.xml</include><include>**/*.properties</include></includes></resource></resources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.3</version><configuration><source>${java-version}</source><target>${java-version}</target><encoding>${project.build.sourceEncoding}</encoding> </configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.0.0</version><configuration><!--将类⽂件打成jar包--><archiveClasses>false</archiveClasses><!--将资源⽂件打到classes⽬录下--><webResources><resource><directory>src/main/resources</directory><targetPath>WEB-INF/classes</targetPath><filtering>true</filtering></resource></webResources></configuration></plugin>3、数据库名称及表结构代码CREATE DATABASE db DEFAULT CHARACTER SET utf8;use db;CREATE TABLE `student` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAULT NULL,`address` varchar(50) DEFAULT NULL,PRIMARY KEY (`id`))ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8;<!-- 配置⾃动扫描的包 --><context:component-scan base-package="com.controller" /><!-- 访问静态资源 --><mvc:resources mapping="/img/**" location="/img/" cache-period="2592000"/><mvc:resources mapping="/css/**" location="/css/" cache-period="2592000"/><mvc:resources mapping="/css/**" location="/js/" cache-period="2592000"/><!-- spring mvc ⽂件上传⽀持 --><bean id="multipartResolver" class="monsMultipartResolver"> <!-- 104857600 代表100MB --><property name="maxUploadSize" value="104857600" /><property name="maxInMemorySize" value="40960" /><property name="defaultEncoding" value="UTF-8"></property></bean><context:component-scan base-package="com.entity"/><!-- 引⼊jdbc配置⽂件db.properties --><bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:db.properties"/></bean><!-- 使⽤spring jdbc中的类建⽴数据源 --><bean id="ds" class="mons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="${db.driver}"/><property name="url" value="${db.url}"/><property name="username" value="${er}"/><property name="password" value="${db.pass}"/><!-- 初始化连接⼤⼩ --><property name="initialSize" value="${db.initialSize}"/><!-- 连接池最⼤数量 --><property name="maxActive" value="${db.maxActive}"/><!-- 连接池最⼤空闲 --><property name="maxIdle" value="${db.maxIdle}"/><!-- 连接池最⼩空闲 --><property name="minIdle" value="${db.minIdle}"/><!-- 获取连接最⼤等待时间 --><property name="maxWait" value="${db.maxWait}"/></bean><!-- SqlSessionFactory --><bean id="sf" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="ds"/><!-- com.entity.Student 可以写 sutdent --><property name="typeAliasesPackage" value="com.entity"/><property name="mapperLocations" value="classpath:com/entity/mapper/*Mapper.xml"/></bean><!-- SqlSession --><bean id="session" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg index="0" ref="sf"/></bean><!--创建数据映射器,数据映射器必须为接⼝ --><!--<bean id="ssm" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="mapperInterface" value="com.entity.mapper.StudentMapper" /><property name="sqlSessionFactory" ref="sf" /></bean>--><!-- 扫描mapper包⾃动在spring中⽣成 xxxxMapper bean --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.entity.mapper"/><property name="sqlSessionFactoryBeanName" value="sf"/></bean><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="ds"/></bean><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="ds"/></bean><tx:annotation-driven transaction-manager="transactionManager"/></beans><!-- Spring和mybatis的配置⽂件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:beans.xml</param-value></context-param><!-- Spring监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 防⽌Spring内存溢出监听器 --><listener><listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class></listener><!-- spring 编码过滤器 --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><async-supported>true</async-supported><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- Spring MVC --><servlet><servlet-name>SpringMVC</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><async-supported>true</async-supported></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>6、实体类编写com.entity.Student.javapackage com.entity;import lombok.Data;/*** Created by webrx on 2017/2/17 0017 10:52.*/@Datapublic class Student {private int id;private String name;private String address;}7、mybatis mapper类及mapper.xml⽂件com.entity.mapper.StudentMapper.java 接⼝ Serverice DAO impl package com.entity.mapper;import com.entity.Student;import org.apache.ibatis.annotations.Insert;import java.util.List;/*** Created by webrx on 2017/2/17 0017 10:51.*/public interface StudentMapper {public List<Student> query();public int delById(int id);@Insert("insert into student values(null,#{name},#{address})") public int insert(Student student);}com.entity.mapper.StudentMapper.xml 配置⽂件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-////DTD Mapper 3.0//EN""/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.entity.mapper.StudentMapper"><select id="query" resultType="student">select * from student</select><delete id="delById" parameterType="int">delete from student where id = #{id}</delete></mapper>8、编写springmvc 控制器类使⽤注解⽅式 com.controller.Hello.java package com.controller;import com.entity.Student;import com.entity.mapper.StudentMapper;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;/*** Created by webrx on 2017/2/17 0017 10:46.*/@Controllerpublic class Hello {@Autowired //⾃动注⼊spring ioc 中的 studentMapperprivate StudentMapper studentMapper;@RequestMapping("/test")public ModelAndView test(){ModelAndView mv = new ModelAndView("show");mv.addObject("student",studentMapper.query());return mv;}@RequestMapping("/save")public String save(Student student){studentMapper.insert(student);return "redirect:/test";}@RequestMapping("/del")public String del(int id){studentMapper.delById(id);return "redirect:/test";}}9、编写前台⽹页 /index.jsp springmvc视图⽂件 /show.jsp/index.jsp 内容如下:<%@ page language="java" pageEncoding="utf-8" %><%@ taglib prefix="c" uri="/jsp/jstl/core" %><!DOCTYPE html><html lang="zh"><head><meta charset="utf-8"><title>ssm三⼤框架整合⽅案</title></head><body><a href="test">springmvc-controller-test</a><hr><%=request.getRemoteAddr()%><c:forEach begin="1" end="5" step="1"><h2>SSM三⼤框架整合</h2></c:forEach></body></html>/show.jsp 视图⽂件<%@ page language="java" pageEncoding="utf-8" %><%@ taglib prefix="c" uri="/jsp/jstl/core" %><!DOCTYPE html><html lang="zh"><head><meta charset="utf-8"><title>显⽰学⽣信息</title><link rel="stylesheet" href="css/index.css"></head><body><h3>添加学⽣信息</h3><div><form action="save" method="post"> 姓名: <input type="text" autofocus placeholder="姓名" name="name"><br>家庭地址: <input type="text" name="address" placeholder="地址"><br><input type="submit" value="提交"></form></div><h3>显⽰学⽣表的信息</h3><c:forEach items="${student}" var="st"><div>${}----<a href="del?id=${st.id}">删除</a></div></c:forEach></body></html>。
SSM框架整合
SSM框架整合⼀、SSM框架整合前⾔ 如果是初次接触SSM整合的朋友,那么最好是完全按照这个步骤来,包括各个起名。
等项⽬正常跑起来再按⾃⼰的想法搭建⼀次会⽐较好。
⼆、SSM框架介绍 SSM框架,emmmmm,没啥好介绍的,⽤起来很快捷很优美,极⼤地简化开发⼯作AND布拉布拉布拉。
三、整合步骤 1.建⼯程,建⽬录,导⼊jar包。
如图所⽰。
如何项⽬没有⾃动⽣成web.xml⽂件,要⼿动创建,注意在WEB-INF⽂件夹下。
jar包有点多了,显⽰不全。
2.各种⽂件配置 这两步⾮常关键,⼀定要注意名称是否正确,错了就会在控制台报些你可能觉得莫名其妙的错误。
然后这⼀步我就贴这些配置⽂件的代码了。
1.web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xmlns:web="/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="<display-name>SSM</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><filter><filter-name>encodingFilter</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><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 加载spring与mybatis和service粘合的配置⽂件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:config/applicationContext-*.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><listener><listener-class>org.springframework.web.context.ContextCleanupListener</listener-class></listener><!-- 加载springmvc配置⽂件 --><servlet><servlet-name>mvc-dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:config/springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>mvc-dispatcher</servlet-name><url-pattern>*.action</url-pattern></servlet-mapping></web-app>View Code 2.springmvc.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/mvc/schema/mvc/spring-mvc.xsd"><!-- 组件扫描 --><context:component-scan base-package="com.zhx.controller"/><!-- 注解驱动器 --><mvc:annotation-driven/><!-- 静态资源处理 --><mvc:default-servlet-handler/><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"value="org.springframework.web.servlet.view.JstlView"/><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/></bean></beans>View Code 3.db.properties 这⾥的数据库名字叫做newsdb.driver=com.mysql.jdbc.Driverdb.url=jdbc:mysql://127.0.0.1:3306/news?characterEncoding=utf8ername=rootdb.password=rootView Code 4.mybatis.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><typeAliases><package name="com.zhx.pojo"/></typeAliases><mappers><mapper resource="com/zhx/mappers/UserMapper.xml"/></mappers></configuration>View Code 5.applicationContext-service.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:context="/schema/context" xmlns:p="/schema/p"xmlns:aop="/schema/aop" xmlns:tx="/schema/tx"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-4.0.xsd /schema/context /schema/context/spring-context-4.0.xsd/schema/aop /schema/aop/spring-aop-4.0.xsd/schema/tx/schema/tx/spring-tx-4.0.xsd/schema/util /schema/util/spring-util-4.0.xsd"><!-- 扫描 --><context:component-scan base-package="com.zhx"><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!-- 事务管理器 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 数据源 --><property name="dataSource" ref="dataSource" /></bean><!-- 通知 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!-- 传播⾏为 --><tx:method name="save*" propagation="REQUIRED" /><tx:method name="insert*" propagation="REQUIRED" /><tx:method name="delete*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /><tx:method name="find*" propagation="SUPPORTS" read-only="true" /><tx:method name="get*" propagation="SUPPORTS" read-only="true" /></tx:attributes></tx:advice><!-- 切⾯ --><aop:config><aop:advisor advice-ref="txAdvice"pointcut="execution(* com.zhx.service.*.*(..))" /></aop:config></beans>View Code 6.applicationContext-dao.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/mvc/schema/mvc/spring-mvc.xsd"><!-- 加载配置⽂件 --><context:property-placeholder location="classpath:config/db.properties" /><!-- 数据库连接池 --><bean id="dataSource" class="mons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="${db.driver}" /><property name="url" value="${db.url}" /><property name="username" value="${ername}" /><property name="password" value="${db.password}" /><property name="maxActive" value="10" /><property name="maxIdle" value="5" /></bean><!-- 创建SqlSessionFactory --><bean id="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"><property name="configLocation" value="classpath:config/mybatis.xml"/><property name="dataSource" ref="dataSource"/></bean><!-- 批量配置mapper代理类,默认bean的id为类名⾸字母⼩写 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 配置扫描的包 --><property name="basePackage" value="com.zhx.dao"/><!-- 默认不需要配置SqlSessionFactory(只有⼀个SqlSessionFactory时),单独配置也可以 --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/></bean></beans>View Code 3.进⾏数据库配置,直接上图在⾥⾯添加了⼀条数据。
Java EE企业级应用开发(SSM) (11)
14
14
案例步骤详解
1. 导入案例所需要的坐标
Spring框架坐标
Spring JDBC坐标
mysql数据库驱动坐 标
MyBatis框架坐 标
MyBatis整合Spring坐标
单元测试坐标
15
案例步骤详解
1. 导入案例所需要的坐标
SpringMVC框架坐 标
jackson坐标
16
案例步骤详解
2. 创建User实体类
23
23
案例步骤详解
9. 编写SpringMVC核心配置文件spring-mvc.xml
24
24
案例步骤详解
10. 打开浏览器,进行测试
直接通过浏览器访问该路径 后台响应回来的json格式的数据
【作业4】使用三大框架25整合实现账2户5 的CRUD
接下来,咱们一起来看一看,通过一个案例,来学会Spring + MyBatis框架的 整合。
3
案例实现步骤
【课程案例】1101:MyBatis和Spring整合
实现步骤: 1. 导入案例所需要的坐标 2. 创建User实体类 3. 创建UserMapper接口 4. 创建UserService接口和UserServiceImpl实现类 5. 编写映射文件UserMapper.xml 6. 编写Spring核心配置文件applicationContext.xml 7. 编写测试类UserController,进行测试
ssm框架搭建和整合流程
ssm框架搭建和整合流程Spring + SpringMVC + Mybatis整合流程1 需求 1.1 客户列表查询 1.2 根据客户姓名模糊查询2 整合思路第⼀步:整合dao层Mybatis和spring整合,通过spring管理mapper接⼝,使⽤mapper扫描器⾃动扫描mapper接⼝,并在spring中进⾏注册。
第⼆步:整合service层通过spring管理service层,service调⽤mapper接⼝。
使⽤配置⽅式将service接⼝配置在spring配置⽂件中,并且进⾏事务控制。
第三步:整合springMVC由于springMVC是spring的模块,不需要整合。
3 准备环境3.1 数据库版本 mysql5.73.2 编译器 eclipse3.3 Jar 包3.3.1 spring的jar包3.3.2 spring与mybatis的整合jar包3.3.3 mybatis的jar包3.3.4 数据库驱动包3.3.5 log4j包3.3.6 log4j配置⽂件### direct log messages to stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.erryout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file mylog.log ###log4j.appender.file=org.apache.log4j.FileAppenderlog4j.appender.file.File=c:\mylog.logyout=org.apache.log4j.PatternLayoutyout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=debug, stdout3.3.7 dbcp数据库连接池包3.3.8 jstl包4 整合dao4.1 sqlMapconfig.xmlmybatis的配置⽂件:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><!-- 定义别名 --><typeAliases><package name="com.haohan.ssm.po"/></typeAliases><!-- 配置mapper映射⽂件 --><mappers><!-- 加载原始dao使⽤映射⽂件 --><!-- <mapper resource="sqlmap/User.xml" /> --<!--批量mapper扫描遵循规则:将mapper.xml和mapper.java⽂件放在⼀个⽬录且⽂件名相同,现在由spring配置扫描--> <!-- <package name="cn.itcast.ssm.dao.mapper" /> --></mappers></configuration>4.2 db.properties数据库配置⽂件jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/haohan1?characterEncoding=utf8&useSSL=falseername=rootjdbc.password=1234564.3 applicationContext-dao.xmlspring在这个xml⽂件中配置dbcp连接池,sqlSessionFactory,mapper的批量扫描。
ssm框架流程
ssm框架流程SSM框架(Spring+SpringMVC+MyBatis)是目前非常流行的Java Web开发框架,它结合了Spring框架、SpringMVC框架和MyBatis框架的优势,使得开发者可以更加高效地进行Web应用开发。
SSM框架的流程分为前端请求处理、后端分发处理和数据库操作三个步骤。
第一步是前端请求处理,当用户在浏览器中输入URL或者点击页面的链接时,请求会发送到服务器端。
SpringMVC框架的核心是DispatcherServlet,它是前端控制器,负责接收所有请求,并进行第一步的处理。
DispatcherServlet会根据请求的URL找到对应的处理器(Controller),并将请求数据封装成一个包含请求信息的对象。
Controller中的处理方法会处理该请求,并将处理结果封装成一个Model对象,并返回视图名。
第二步是后端分发处理,DispatcherServlet会将Model对象传递给ViewResolver(视图解析器),ViewResolver根据视图名找到对应的视图模板(JSP、HTML等),并将Model对象中的数据填充到视图模板中。
最终,服务器会将填充好数据的视图返回给用户的浏览器。
第三步是数据库操作,MyBatis框架是SSM框架中负责数据库操作的核心组件。
在Controller中,可以通过@Autowired注解注入MyBatis的Mapper接口,并调用接口中定义的方法来实现对数据库的操作。
Mapper接口中定义了增删改查等操作数据库的方法,而对应的SQL语句则是在MyBatis的XML文件中配置的。
MyBatis会读取XML文件,并根据接口方法的名称和参数类型来执行对应的SQL语句,最终将结果返回给Controller。
在整个流程中,Spring框架扮演了框架的骨架角色,它负责依赖注入、事务管理等底层功能。
SpringMVC框架实现了前端请求处理和后端分发处理的功能,它通过DispatcherServlet来接收和分发请求,并将处理结果返回给浏览器。
ssm工作流程
ssm工作流程SSM工作流程。
SSM是指Spring+SpringMVC+MyBatis的整合,是一种比较常用的JavaEE开发框架。
在实际开发中,SSM框架可以帮助我们更高效地进行软件开发,提高开发效率和质量。
下面将详细介绍SSM框架的工作流程。
1. Spring框架。
Spring框架是一个轻量级的IoC和AOP容器框架,它提供了一个全面的编程和配置模型,用于构建企业级应用。
Spring框架的工作流程主要包括配置文件的编写、Bean的定义和依赖注入、AOP的实现等。
在SSM框架中,Spring框架负责管理整个应用的对象,提供了IoC容器和AOP特性,使得应用的各个模块之间解耦,提高了代码的可维护性和可测试性。
2. SpringMVC框架。
SpringMVC框架是基于Spring框架的一个轻量级的MVC框架,它提供了一个强大的MVC架构,用于构建Web应用程序。
SpringMVC框架的工作流程主要包括前端控制器的配置、HandlerMapping的注册、HandlerAdapter的调用、视图解析器的解析等。
在SSM框架中,SpringMVC框架负责处理用户请求和响应,将用户请求映射到对应的Controller方法,并将处理结果返回给用户。
3. MyBatis框架。
MyBatis框架是一个优秀的持久层框架,它将SQL语句和Java代码进行分离,提供了强大的SQL映射功能和灵活的参数处理能力。
MyBatis框架的工作流程主要包括Mapper接口的定义、SQL语句的映射、参数的传递和结果的映射等。
在SSM框架中,MyBatis框架负责与数据库进行交互,执行SQL语句,并将结果映射为Java对象。
4. SSM框架整合。
在SSM框架中,Spring框架负责管理对象的生命周期和依赖注入,SpringMVC框架负责处理用户请求和响应,MyBatis框架负责与数据库进行交互。
这三个框架通过配置文件和注解的方式进行整合,使得它们能够协同工作,共同构建一个完整的Web应用程序。
第10章 SSM框架整合
第10章 SSM框架整合
10.2 MyBatis与Spring整合 2、在Spring中配置MyBatis工厂 MyBatis与Spring整合,其SessionFactory由Spring管理,因此需 要在Spring配置文件中添加相关的配置内容。 参见配置文件代码 3、整合代码示例 参见代码示例
本章小结
本章简要介绍了MyBatis与Spring,MyBatis与 Spring MVC框架整合的一般方法和主要步骤,并 且用代码示例对操作方法进行了具体说明。
第10章 SSM框架整合
第10章 SSM框架整合
(3)整合所需中间jar包
(4)数据库驱动jar 包
(5)数据源jar包
第10章 SSM框架整合
本章主要讲解MyBatis与Spring,与Spring MVC整合的方法。 重点是环境搭建、整合方法和操作步骤。
10.1 SSM整合环境搭建 10.2 MyBatis与Spring整合 10.3 MyBatis与Spring MVC整合 10.4 本章小结
第10章 SSM框架整合
本章主要讲解MyBatis与Spring,与Spring MVC整合的方法。 重点是环境搭建、整合方法和操作步骤。
10.1 SSM整合环境搭建 10.2 MyBatis与Spring整合 10.3 MyBatis与Spring MVC整合 10.4 本章小结
第10章 SSM框架整合
spring-beans-5.0.2.RELEASE.jar spring-context-5.0.2.RELEASE.jar
spring-core-5.0.2.RELEASE.jar spring-expression-5.0.2.RELEASE.jar
SSM框架整合
1.编写applicationContext.xml文件,管理Spring容器2.web.xml中启动Spring框架3.web.xml配置DispatcherServlet,启动SpringMVC框架4.编写spring-servlet.xml文件,配置SpringMVC的注解扫描与视图解析5.编写MyBatis的实体映射文件(mapper)6.applicationContext.xml中集成MyBatis框架:a)配置包扫描器,使用注解将数据层交付Spring管理b)配置数据源c)配置SqlSessionFactory,替换MyBatis中原有的SqlSessionFactoryd)配置映射文件扫描器,生成mapper实例也可以通过这种方式配置,该方式需要在上述sqlSessionFactory中配置configLocation加载myBatis的配置文件进行mapper映射<bean id="userDao"class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="mapperInterface"value="erDao"></property><property name="sqlSessionFactory"ref="sqlSessionFactory"></property> </bean>C3P0数据池连接<bean name="dataSource"class="boPooledDataSource"><property name="driverClass"><value>oracle.jdbc.driver.OracleDriver</value></property><property name="jdbcUrl"><value>jdbc:oracle:thin:@localhost:1521:niit</value> </property><property name="user"><value>system</value></property><property name="password"><value>niit</value></property></bean><!-- 事务管理器 --><bean id="txManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManag er"><property name="dataSource"ref="dataSource"/></bean><!-- 事务通知 --><tx:advice id="txAdvice"transaction-manager="txManager"> <tx:attributes><!-- 配置事务传播性 --><tx:method name="get*"propagation="REQUIRED"read-only="true"/><tx:method name="count*"propagation="REQUIRED"read-only="true"/><tx:method name="find*"propagation="REQUIRED"read-only="true"/><tx:method name="list*"propagation="REQUIRED"read-only="true"/><tx:method name="search*"propagation="REQUIRED"read-only="true"/><tx:method name="add*"propagation="REQUIRED"rollback-for="ng.Exception"/><tx:method name="insert*"propagation="REQUIRED"rollback-for="ng.Exception"/><tx:method name="delete*"propagation="REQUIRED"rollback-for="ng.Exception"/><tx:method name="update*"propagation="REQUIRED"rollback-for="ng.Exception"/><tx:method name="modify*"propagation="REQUIRED"rollback-for="ng.Exception"/><tx:method name="edit*"propagation="REQUIRED"rollback-for="ng.Exception"/><tx:method name="batch*"propagation="REQUIRED"rollback-for="ng.Exception"/></tx:attributes></tx:advice><!-- 事务aop切入点 --><aop:config><!-- * com.niit.service.*.*(..)表示com.niit.service包中的任意方法--><aop:pointcut id="txPointcut"expression="execution(*com.niit.service.*.*(..)) "/><aop:advisor advice-ref="txAdvice"pointcut-ref="txPointcut"/> </aop:config>。
