SSM开发实战教程(Spring+Spring MVC+Mybatis) 第11章 Spring MVC关键技术
ssm框架工作原理及流程
ssm框架工作原理及流程
SSM框架是由Spring、SpringMVC和MyBatis这三个开源框
架整合而成的,用于构建Java EE应用程序的框架。
框架的工作原理如下:
1. 首先,Spring框架负责管理和协调应用程序中的各个组件,
包括依赖注入、控制反转和面向切面编程。它提供了一个容器来管理对象的生命周期,并通过依赖注入将这些对象注入到其他对象中。
2. SpringMVC框架是用于构建Web应用程序的部分,它负责
处理请求和响应。当客户端发送请求时,SpringMVC框架将
根据请求的URL映射到相应的控制器,控制器接收请求并执
行相应的业务逻辑,最后将响应返回给客户端。
3. MyBatis框架是用于数据库访问的部分,它通过映射文件定
义了对象与数据库表之间的映射关系。当数据访问层需要执行数据库操作时,MyBatis框架将根据映射文件生成相应的SQL
语句,并执行数据库操作。
整个流程如下:
1. 客户端发送请求到DispatcherServlet,该Servlet是SpringMVC框架的核心,用于接收请求并将其转发给相应的
控制器。
2. DispatcherServlet根据URL映射找到对应的控制器,并将请
求转发给控制器。
3. 控制器接收请求后,调用相应的服务层方法,进行业务处理。
4. 服务层方法可能需要访问数据库,这时会通过MyBatis框架执行相应的数据库操作。
5. 控制器获取服务层返回的结果,并将结果封装为ModelAndView对象。
6. 控制器将ModelAndView对象返回给DispatcherServlet。
SpringMVC详细示例实战教程(较全开发教程)
SpringMVC详细⽰例实战教程(较全开发教程)SpringMVC学习笔记----
⼀、SpringMVC基础⼊门,创建⼀个HelloWorld程序
1.⾸先,导⼊SpringMVC需要的jar包。
2.添加Web.xml配置⽂件中关于SpringMVC的配置
<!--configure the setting of springmvcDispatcherServlet and configure the mapping-->
<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-servlet.xml</param-value>
</init-param>
<!-- <load-on-startup>1</load-on-startup> -->
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
SSM(Spring+SpringMVC+MyBatis)高并发优化思路
SSM(Spring+SpringMVC+MyBatis)⾼并发优化思路
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合⽽成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项⽬的框架。
学习课程的地址:
⽼师的GitHub地址:
⾼并发发⽣在哪⾥?
分析整个系统流程,⽤户进⾏秒杀时最感兴趣的进⼊详情页进⾏秒杀。图中红⾊表⽰可能会出现⾼并发的点,绿⾊表⽰不会出现⾼并发。
为什么要单独获取系统时间?
⽤户进⾏⼤量刷新时,详情页会部署到CDN节点上,进⾏静态化处理同时包括静态资源(css/js等)。这样就难以获得系统的统⼀秒杀时间。
CDN(内容分发⽹络)加速⽤户获取数据的系统,部署在离⽤户最近的⽹络节点上,命中CDN不需要访问后端服务器,互联⽹公司⼀般⾃⼰搭建或租⽤CDN服务器。涉及到CDN知识,进公司后涉及到⾃然就会了。。。
获取系统时间不⽤进⾏优化,因为访问内存的速度相当快。
秒杀地址接⼝分析
⽆法使⽤CDN,使⽤CDN⼀般是不便的资源,⽽这⾥返回秒杀地址是变化的。适合使⽤服务端缓存如redis等。
流程则是先访问redis,如果redis中没有再去数据库中寻找,即redis是数据库的⼀个映射(后⾯得学下redis。。。),这⾥涉及到⼀致性问题,使⽤超时穿透/主动更新的⽅法。
秒杀操作的优化分析
⽆法使⽤CDN,库存量缓存困难,⼀⾏数据竞争(热点商品)。
为什么说MySQL低效?测试⾥MySQL的⼀条update⼀秒钟可以进⾏4W多次,不算低。主要是因为⾏级锁,每个⽤户都进⾏update,进⾏事务操作,等待锁的过程变成了串⾏化的操作。⾏级锁是在commit之后释放,优化的⽅向则是如何减少⾏级锁的持有时间。
基于SSM框架的后台管理系统设计与实现
基于SSM框架的后台管理系统设计与实现
一、本文概述
随着信息技术的迅猛发展和企业信息化建设的深入推进,后台管理系统在现代企业中扮演着越来越重要的角色。后台管理系统作为企业内部运营的核心支撑,其稳定性、安全性和易用性直接关系到企业的运营效率和管理水平。因此,开发一套高效、稳定、易用的后台管理系统成为当前企业信息化建设的重要任务。
本文旨在探讨基于SSM(Spring、SpringMVC、MyBatis)框架的后台管理系统设计与实现过程。SSM框架作为当前Java Web开发领域的主流框架之一,具有代码分离度高、可维护性强、扩展性好等优点,非常适合用于构建大型、复杂的后台管理系统。通过深入研究SSM框架的技术特点和应用实践,本文旨在提供一种基于SSM框架的后台管理系统设计方案,为企业快速构建稳定、高效、易用的后台管理系统提供参考和借鉴。
本文将从需求分析、系统设计、技术实现和测试优化等方面,全面介绍基于SSM框架的后台管理系统的设计与实现过程。通过需求分析,明确系统的功能和特点;通过系统设计,构建系统的整体架构和各个模块;通过技术实现,详细阐述基于SSM框架的后台管理系统的开发过程和技术细节;通过测试优化,确保系统的稳定性和性能。
本文旨在为Java Web开发人员提供一种基于SSM框架的后台管理系统设计与实现的方法论和实践经验,以期推动SSM框架在后台管理系统领域的应用和发展。本文也希望为企业信息化建设提供有益的参考和启示,推动企业后台管理系统的升级和改造,提升企业运营效率和管理水平。
二、SSM框架概述
使用IDEA搭建SSM框架的详细教程(spring+springMVC+MyBatis)
使⽤IDEA搭建SSM框架的详细教程(spring+springMVC+MyBatis)⽬录
1 框架组成
2 所需⼯具
3 搭建步骤
4 接⼝对应的Mapper.xml
5 功能添加步骤
6 建议
1 框架组成
Spring
SpringMVC
MyBatis
2 所需⼯具
Mysql 8.0.15
数据库管理系统,创建数据库
Tomcat 8.5.51
⽤于部署web项⽬
Maven 3.6.1
项⽬构建、项⽬依赖管理
lombok 1.18.10(可⽤可不⽤⼯具)
⽤于类注解创建setter、getter、⽆参构造、全参构造、toString等函数
注:只导⼊依赖,不安装插件是不起作⽤的
3 搭建步骤
3.1 新建⼀个空Maven项⽬,填写项⽬相关信息,完成
3.2 添加web框架⽀持
选择现有框架⽀持
3.3 pom.xml导⼊依赖,设置Maven资源过滤<!--导⼊依赖-->
<dependencies>
<!--Junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
ssm框架(SpringSpringmvcMybatis框架)整合及案例增删改查
ssm框架(SpringSpringmvcMybatis框架)整合及案例增删改查
三⼤框架介绍
ssm框架是由Spring springmvc和Mybatis共同组成的框架。Spring和Springmvc都是spring公司开发的,因此他们之间不需要整合。也可以说是⽆缝整合。mybatis公司开发的mybatis,因为需要和Spring整合,但是他们之间是有缝的。因此mybatis公司就做出了jar包 mybatis-spring的核⼼整合包。
Q:什么叫⽆缝整合,有缝整合?
A:最⽅便的理解就是有Jar包就是有缝,没有jar包就是⽆缝。
整合准备条件
三个⽂件:applicationContext.xml springmvc.xml mybatis.xml (名字⼀般都这样起,因为我们还需要对他们进⾏配置,需要⽤⽂件名,同时也能让其他⼈明⽩)
下图是项⽬的架构图
applicationContext.xml配置⽂件
⾥⾯包含数据源的读取properties,配置dataSource,事务管理对象transactionManager、
sqlsession⼯⼚SqlSessionFactory 以及Mapper扫描(xml名和接⼝名相同)。主要负责与mybatis整合
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="/schema/beans"
xmlns:context="/schema/context" xmlns:p="/schema/p"
JavaEE(SSM)框架整合开发教与学(教学大纲)
JavaEE(SSM)框架整合开发教与学(教学大纲)
《Java EE框架整合开发》是基于SSM框架的理论与实践相结合的课程,是软件工程专业的一门专业必修课程。主要讲解Spring、Spring MVC和MyBatis三大框架(SSM)的基础知识和实际应用。具体内容包括4部分:第1部分,主要讲解了Spring框架的相关知识,内容包括Spring IoC、Spring Bean、Spring AOP以及Spring 的事务管理;第2部分,主要讲解了MyBatis的相关知识,内容包括映射器以及动态SQL;第3部分,主要讲解了Spring MVC的相关知识,内容包括Controller、类型转换和格式化、数据绑定和表单标签库、拦截器、数据验证、国际化、统一异常处理、文件的上传和下载以及EL与JSTL;第4部分,主要讲解了SSM框架整合的基本思想与实践开发,内容包括SSM框架整合、基于SSM框架的电子商务平台、邮件管理系统以及人事管理系统的设计与实现。
【课程目标】
通过本课程的学习,学生应首先认识和了解SSM框架的基础知识;其次掌握SSM框架整合的基本思想与实践开发;最终,能够独立设计并开发一个基于SSM框架的企业级应用系统。
【课程内容及学时分布】
教学周教学内容学时
第一周第1章Spring入门
本章主要介绍Spring的体系结构、如何构建Spring 的开发环境。通过ch1应用为例,要求了解Spring的体系结构,掌握Spring入门程序的开发流程以及Spring开发环境的构建。
2
第一周第2章Spring IoC
《Java企业应用开发(SSM)》课程标准
《Java企业应用开发(SSM)》课程标准
课程名称:Java企业应用开发(SSM)
课程代码:3250620
适用专业:软件技术专业(软件开发方向)
课程性质:专业核心课程
学时:96学时(理论: 48 实践: 48)
学分:6学分
一、课程性质与任务
本课程是软件技术专业(软件开发方向)的核心课程,是基于软件项目开发实际生产过程的“工学结合”课程。通过课程的学习,使学生掌握SSM(Spring+Spring MVC+MyBatis)的基本知识,能用Spring 框架创建包含松散耦合的应用程序组件,能用MyBatis框架实现数据的存储和访问。同时在实践教学中,培养学生良好的编程习惯,积累解决实际问题的能力,提高学生的职业综合素质。
本课程与其他课程的关系:前导课程包括《网页设计客户端技术》、《Java编程设计基础》、《Java高级程序设计》、《Java Web应用开发》、《关系数据库》等,后续课程包括《Java Web应用实战》。
二、目标与要求
(一)总体目标与要求
通过应用情景的学习与分析,要求学生能够掌握SSM(Spring+Spring MVC+MyBatis)三大框架的基本知识,能够正确配置和使用SSM框架的整合技术,适应企业级开发的技术需要,为大型项目开发奠定基础。同时要求学生掌握需求分析、详细设计、系统实现和系统维护等软件开发的各项能力,培养学生较强的团队合作、沟通表达、工作责任心、职业道德与规范等综合素质,为学生以后从事更专业化的软件开发工作奠定基础。
(二)具体目标与要求
1、知识目标与要求
SSM开发实战教程(Spring+Spring MVC+Mybatis) 第3章 多表关联查询
</select>
<!-- 多表单独查询,查一方的表 --> <select id="findClassesById" parameterType="String" resultMap="classesResultMap">
select cid,cname from classes where cid=#{cid} </select>
3.3.1多对一的方式实现自连接 项目案例:查询员工的信息及对应的上司信息。(项
目源码见本书配套源码:第3章/自连接多对一方式 /mybatis33)。 思路分析:可将员工当作多方,上司当用一方。 (1)修改数据库。 添加一个表employee并插入测试数据:
3.2 多对一关联查询
多对一关联查询是指在查询多方对象的时候,同时 将其所关联的一方对象也查询出来。
JavaEE企业级框架开发实战教程-教案--第2章--Java EE框架开发--SSM
章节编号:
第一章:Java EE框架开发--SSM
内容简介:
本章主要介绍企业级开发框架Spring、Spring MVC和MyBatis的应用,使读者掌握企业应用中对框架的使用。
(3)结合讲述Spring架构时web模块来说明Spring MVC的无缝集成。
课后任务:
(1)将第一章的项目改写为基于SSM开发的项目
(4)使用Mapper代理开发。
(5)了解对象关系映射。
问题列表:
(1)什么叫数据持久化?你所知道的数据持久化框架有哪些?
(2)为什么Mybatis的灵活性更高?
(3)什么是动态代理,采用Mapper代理开发有什么好处?
授课要点:
(1)举例说明常见的数据持久化框架,对比其优缺点。
(2)Mybatis架构及相关组件作用。
问题列表:
(1)回想第一章中Servlet中如何处理用户请求及获取数据的?
(2)什么是MVC模型?你所了解的MVC模型有哪些?
(3)什么是注解?使用注解有什么好处?
授课要点:
(1)借助第一章项目说明基于Servlet开发说明对参数的解析,或增加Servlet功能的繁琐型,如在一个查询的Servlet中进行删除、更新等操作该如何对代码进行修改(添加method参数来区分意图)。
ssm框架原理及流程
ssm框架原理及流程
SSM框架原理及流程。
SSM框架是指Spring+SpringMVC+MyBatis的整合,是目前Java Web开发中比较流行的一种框架组合。它将Spring的IoC和AOP思
想与SpringMVC的轻量级Web框架和MyBatis的ORM框架相结合,
能够很好地解决传统的Java EE开发中的一些问题,提高开发效率
和系统的可维护性。
首先,我们来了解一下SSM框架中各个组件的作用和原理。
1. Spring框架。
Spring框架是一个轻量级的IoC和AOP容器框架,它提供了丰
富的配置和管理JavaBean的功能,可以帮助我们实现松耦合的组件
之间的协作。Spring框架的核心是IoC容器,它通过配置文件或注
解的方式管理JavaBean之间的依赖关系,降低了组件之间的耦合度,使得系统更易于维护和扩展。
2. SpringMVC框架。
SpringMVC框架是基于Spring框架的一个轻量级Web框架,它
采用了MVC(Model-View-Controller)的设计模式,将业务逻辑、
数据和呈现分离,使得系统更易于管理和扩展。在SpringMVC框架中,Controller负责接收用户的请求并调用相应的Service进行业
务处理,然后将处理结果返回给View进行呈现。
3. MyBatis框架。
MyBatis框架是一个优秀的持久层框架,它通过XML或注解的
方式将JavaBean和SQL语句进行映射,提供了方便的数据库操作接口,能够很好地解决传统JDBC编程中的一些问题,如手动释放资源、硬编码SQL语句等。
SSM开发基础介绍课件
缓存的失效策略包括LRU、 FIFO等
MyBatis支持自定义缓存 实现,可以替换默认的缓 存实现
缓存可以提高查询性能, 减少数据库访问次数
4
Spring MVC框架
点击此处添加正文,文字是您思想的提炼,为了演示发布的良好效果, 请言简意赅的阐述您的观点。
Spring MVC框架的核心概念
DispatcherServlet:中 央控制器,负责接收和处 理请求
AOP在Spring框架中的优势:降低代码耦合度,提高代码可重用性,便于 维护和扩展
3
MyBatis框架
点击此处添加正文,文字是您思想的提炼,为了演示发布的良好效果, 请言简意赅的阐述您的观点。
MyBatis框架的核心概念
MyBatis是一个Java 持久层框架,支持自 定义SQL、存储过程
和高级映射。
HandlerMapping:处理 器映射,负责将请求映射 到处理器
HandlerAdapter:处理 器适配器,负责调用处理 器处理请求
ViewResolver:视图解 析器,负责将视图名称解 析为实际的视图对象
ModelAndView:模型 和视图,负责封装处理结 果和视图信息
Interceptor:拦截器, 负责在请求处理前后进行 拦截和处理
谢谢
Handler返回 ModelAndView
DispatcherServlet调 用ViewResolver
SSM框架——详细整合教程
SSM框架——详细整合教程
SSM(Spring + SpringMVC + MyBatis)是Java Web开发中常用的框
架组合,通过整合这三个框架,可以使得开发更加高效、灵活、易于维护。下面将详细介绍SSM框架的整合步骤。
1.准备工作
在开始整合之前,首先需要准备好相关的环境和工具。确保已经安装
了JDK、Tomcat和Maven等工具,并且熟悉基本的Java开发和Web开发
知识。
2.创建Maven项目
使用Maven创建一个空白的项目作为基础项目。在项目的pom.xml文
件中添加Spring、SpringMVC和MyBatis等相关的依赖。
3.配置Spring
在Spring的配置文件中,通过注解或XML的方式进行相关配置。配
置文件主要包含以下内容:
-配置数据源,用于连接数据库。
-配置事务管理器,用于管理数据库事务。
- 配置Spring的扫描包,将相关的类自动注入到Spring容器中。
- 配置Spring的AOP(面向切面编程)功能,用于处理事务、日志
等公共逻辑。
4.配置SpringMVC
在SpringMVC的配置文件中,主要进行以下配置:
-配置视图解析器,用于解析并返回视图。
-配置静态资源的处理器,用于处理静态资源文件(如CSS、JS等)。
-配置控制器映射,将请求与相应的控制器方法进行映射。
5.配置MyBatis
在MyBatis的配置文件中,主要进行以下配置:
- 配置数据源,与Spring的数据源配置保持一致。
- 配置MyBatis的映射文件,将Java对象与数据库表进行映射。
- 配置MyBatis的扫描包,将相关的Mapper接口自动注入到Spring
SSM框架 详细整合教程(Spring+SpringMVC+MyBatis)
<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>
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)的容器框架。
使用ssm框架的请求流程
使用SSM框架的请求流程
1. 概述
本文档将介绍使用SSM(Spring+SpringMVC+MyBatis)框架的请求流程。SSM 框架是一种常用的JavaWeb开发框架,它整合了Spring、SpringMVC和MyBatis 三大主流开源框架,提供了一套完整的、基于MVC架构的开发框架。
2. 请求流程简介
SSM框架的请求流程主要包括以下几个步骤:
1.客户端发起HTTP请求;
2.请求到达DispatcherServlet;
3.DispatcherServlet根据请求的URL匹配对应的Controller;
4.Controller进行处理,并返回一个逻辑视图名;
5.DispatcherServlet根据逻辑视图名找到对应的View;
6.View进行渲染,并生成响应结果;
7.响应结果返回给客户端。
下面将详细介绍每个步骤的具体流程。
3. 客户端发起HTTP请求
客户端(一般是浏览器)通过输入URL或点击链接的方式,向服务器发起HTTP请求。
4. 请求到达DispatcherServlet
DispatcherServlet是整个SSM框架的核心控制器。它是SpringMVC框架的一部分,用于统一处理HTTP请求,类似于Struts框架中的ActionServlet。
当DispatcherServlet接收到一个HTTP请求后,会将请求转发给对应的Controller进行处理。
5. 控制器(Controller)处理请求
Controller是SSM框架中用于处理请求的组件,它负责接收请求参数、调用业务逻辑代码进行处理,并返回一个逻辑视图名。
Java企业级应用开发教程Spring Spring MVC MyBatis教程教学大纲
课时
6课时
5
Java EE 企业级应用开发教学大纲
6.熟悉基于注解方式的声明式事务 知识点
学习内容
JdbcTemplate 概述 Spring JDBC 的配置 excute ()方法 update ()方法 query ()方法 事务管理的核心接口 事务管理的方式 基于XML方式的声明式事务
基于注解方式的声明式事务 案例:实现用户登录
知识点
了解 熟悉 掌握 重点 难点
数据绑定
默认类型数据绑定 简单数据类型绑定
V
V
V
V
学习内容
POJO 绑定 自定义类型转换器 数组绑定 集合绑定
复杂 POJO 绑定—属性为对象类型的数 据绑定 复杂 POJO 绑定—属性为 List 类型的数 据绑定 复杂 POJO 绑定—属性为 Map 类型的 数据绑定
Java EE 企业级应用开发教学大纲
《Java EE企业级应用开发教程(Spr ing+Spr ing MVC+MyBatis)》
(课程英文名称)
课程编号: 学 分 : 学分 课 时: 76 课时 (其中:讲课课时: 48 上机课时: 28 ) 先修课程:《Java Web开发技术教程》 适用专业: 计算机以及电子信息技术的相关专业 开课部门:计算机系
动态 SQL 中的元素 <if>元素 <choose>、<when>、<otherwise>元素 <where > 元素 <trim>元素
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
11.1.2 请求转发到其他控制器方法
当前控制器的处理方法处理完毕后也可不返回视图, 而是转发给下一个控制器方法继续处理。
项目案例:用户注册成功后,转发给其他方法,由其他 方法返回视图显示当前用户的基本信息。(项目源码 见本书配套源码:第11章/转发与重定向/springmvc18)
项目案例:用户注册成功后,转发给其他方法,由其他方 法返回视图显示当前用户的基本信息。(项目源码见 本书配套源码:第11章/转发与重定向/springmvc19)
关键代码
@RequestMapping("/doregister.do")
public String doRegister(User user,HttpServletRequest request){
(1).放入到Model中的value,只能是基本数据类型与 String, 不能是自定义类型的对象数据。原因是视图解析器会将 Map的value放入到URL后作为请求参数传递出去,任何类 型的value,都会变为String。
(2).重定向的面页中是无法从request 中读取数据的。但 由于map中的key与value,以请求参数的形式放到了请求的 URL后,所以,页面可以通过EL表达式中的请求参数param 读取。
user);
request.setAttribute("user",
return "forward:/WEBINF/jsp/info.jsp"; }
注意:这种情况不能使用ModelAndView来传递数据, 但可以使用HttpServletRequest等来传递数据。
11.1.4 请求重定向到其他页面
当处理器方法返回String 时,该String 即为要跳转的 视图。必须在其前面加上前辍 forward:,显式的指 定跳转方式为请求转发。视图解析器将不会对其进 行前辍与后辍的拼接,该String中的路径须是完整路径。
请求转发的目标资源无论是一个页面,还是一个 Controller,用法一样。
SSM开发实战教程
第11章 Spring MVC关键技术
11.1 转发与重定向
当处理器完成请求处理后向其它资源进行跳转时, 有两种跳转方式:请求转发与重定向。根据跳转的 资源类型,分为两类:跳转到页面与跳转到其它处 理器。请求转发的页面,可以是 WEB-INF 中页面, 但重定向的页面不能为 WEB-INF中的页面的,因为 重定向相当于用户重新发出一次请求,而用户是不 可以直接访问 WEB-INF 中的资源。
11.1.1 请求转发到其他页面
当处理器方法返回ModelAndView 时,跳转到指定的 ViewName,默认情况下使用的是请求转发,当然也 可显式的进行请求转发。此时,需在setViewName() 指定的视图前添加forward关键字,一旦添加了 forward关键字,控制器方法返回的视图名称就不会 再与视图解析器中的前辍与后辍进行拼接,所以必 须写出相对于项目根的完整路径才能返回正确的视 图。
@RequestMapping("/second.do") public ModelAndView doSecond(User user){
ModelAndView mv=new ModelAndView(); mv.addObject("user",user); mv.setViewName("forward:/WEBINF/jspபைடு நூலகம்info.jsp"); return mv; }
当通过请求转发跳转到目标资源(页面或Controller) 时,若需要目标资源传递数据,可以使用
HttpRequestServlet,HttpSession,还可以将数据存 放于ModelAndView中的Model中。目标页面则通过 EL 表达式来访问该数据。下面案例演示使用 ModelAndView的情形。
在重定向时,请求参数不能通过HttpServletRequest 向目标资源中传递。可以通过以下方式之一来传递 请求参数。
一、 通过ModelAndView中的Model携带参数 当ModelAndView中的Model 存入数据后,视图
解析器InternalResourceViewResolver 会将map中的 key 与value,以请求参数的形式放到请求的URL后。 注意事项:
项目案例:用户注册完毕后,显示用户的注册信息。 (项目源码见本书配套源码:第11章/转发与重定向
/springmvc17)
关键代码
@RequestMapping("/doregister.do") public ModelAndView doRegister(User user){ ModelAndView mv=new ModelAndView(); mv.addObject("user",user); mv.setViewName("forward:/WEB-
(3).重定向的页面不能是/WEB-INF下的页面。因为重定向 相当于客户端发出一次新的请求,而客户端是不可以请求 /WEB-INF下的资源的。
可以发现,参数仍然可以在两个方法之间传递,第一个 方法把参数存进ModelAndView,第二个方法用同名 形式参数接收。
mv.setViewName("forward:second.do");这行代码实 现转发到另一个方法second.do继续处理。
11.1.3 返回String时的请求转发
关键代码
@RequestMapping("/doregister.do") public ModelAndView doRegister(User user){ ModelAndView mv=new ModelAndView(); mv.addObject("user",user); mv.setViewName("forward:second.do"); return mv; }