SpringMVC深入总结

合集下载

SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

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等。

SpringMVC中的Model对象用法说明

SpringMVC中的Model对象用法说明

SpringMVC中的Model对象⽤法说明模型对象的作⽤主要是保存数据,可以借助它们将数据带到前端。

常⽤的模型对象有以下⼏个:ModelAndView(顾名思义,模型和视图,既可以携带数据信息,也可以携带视图信息,常规⽤法如下)/*** ModelAndView 绑定数据到视图(ModelMap⽤于传递数据 View对象⽤于跳转)* @return* @throws Exception*/@RequestMapping(value="/case2")public ModelAndView case2() throws Exception {ModelAndView mav = new ModelAndView();mav.setViewName("/demo03/model.jsp");mav.addObject("sex", "boy");return mav;}Map,和modelAndView原理⼀样,同样是将数据⼀个⼀个放在requestScope中,前端取数据同样也是${模型数据} /*** ⽬标⽅法可以添加 Map 类型(实际上也可以是 Model 类型或 ModelMap 类型)的参数.* @param map* @return*/@RequestMapping("/case")public String case1(Map map) throws Exception{map.put("sex", "获取成功!!");return "/demo03/model.jsp";}@SessionAttributes(相当于创建session对象,往session对象⾥放数据,这⾥⽤⼀个注解完美解决)基本格式如下:/*** @SessionAttributes 除了可以通过属性名指定需要放到会话中的属性外(实际上使⽤的是 value 属性值),* 还可以通过模型属性的对象类型指定哪些模型属性需要放到会话中(实际上使⽤的是 types 属性值)* 注意: 该注解只能放在类的上⾯. ⽽不能修饰⽅法当于在map中和session中各存放了⼀个实体类,⼀个String类的字符串*/@SessionAttributes("user")@Controllerpublic class SessionController {@ModelAttribute("user")public User getUser(){User user = new User();return user;}/*** http://localhost:8080/s/s1?id=1* 请求转发 forward: 不需要任何处理* 请求重定向 redirect: 使⽤SessionAttribute⽅式⽤于在重定向中传⾄将值存储在session中【⽤完记住清除】* @return* @throws Exception*/@RequestMapping(value="/s1",method=RequestMethod.GET)public String case1(@ModelAttribute("user") User user) throws Exception{return "redirect:/s2";}@RequestMapping(value="/s2",method=RequestMethod.GET)public String case2(Map map,HttpServletResponse res,SessionStatus sessionStatus) throws Exception{User user=(User)map.get("user");res.getWriter().println(user.getId());sessionStatus.setComplete();return null;}}SpringMVC中的Model和ModelAndView的区别1.主要区别Model是每次请求中都存在的默认参数,利⽤其addAttribute()⽅法即可将服务器的值传递到jsp页⾯中;ModelAndView包含model和view两部分,使⽤时需要⾃⼰实例化,利⽤ModelMap⽤来传值,也可以设置view的名称2.例⼦1)使⽤Model传值@RequestMapping(value="/list-books")private String getAllBooks(Model model){logger.error("/list-books");List<Book> books= bookService.getAllBooks();model.addAttribute("books", books);return "BookList";}在jsp页⾯利${books}即可取出其中的值2)使⽤ModelAndView传递值有两种⽅法,不同⽅法在jsp页⾯的取值⽅式不同,同时设置了view的名称public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response,Object handler, Exception ex) {LibraryException le=null;if(ex instanceof LibraryException){le=(LibraryException)ex;}else{le=new LibraryException("系统未知异常!");}ModelAndView modelAndView=new ModelAndView();modelAndView.addObject("exception",le.getMessage());modelAndView.getModel().put("exception",le.getMessage());modelAndView.setViewName("error");return modelAndView;}jsp中${requestScope.exception1}可以取出exception1的值;jsp中${exception2}可以取出exception2的值以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

SpringMVC体系结构和处理请求控制器

SpringMVC体系结构和处理请求控制器

SpringMVC体系结构和处理请求控制器MVC设计模式 通常的Web项⽬,架构模式基本分层 数据库访问接⼝:DAO层 处理业务逻辑:Service层 数据实体:POJO 负责前端请求的接受处理:Servlet 负责前端页⾯展⽰:JSP MVC设计模式:它是软件⼯程中的⼀种软件架构模式。

它强制性地使软件系统的输⼊、处理和输出分开。

把软件系统分为三个基本部分:模型(Model)、视图(View)、控制器(Controller) 视图(View):负责格式化数据并把他们呈现给⽤户,包括数据展⽰、⽤户交互、数据验证、界⾯设计等功能。

对应组件:JSP或者HTML⽂件 控制器(Controller):负责接收并转发请求,对进⾏处理后指派视图并将响应结果发送给客户端。

对应组件Servlet 模型(Model):模型对象拥有最多的处理任务,是应⽤程序的主体部分,负责数据逻辑(业务规则)的处理和实现数据操作。

对应组件:JavaBean(处理业务逻辑Service层,数据库操作相关的DAO层,贯穿各层之间的数据模型,数据实体POJO) MVC的两种模式 (1)JSP Model1 业务流程较为简单时,可以把控制器的功能交给视图实现。

故Model1模式只有视图和模型,没有控制器(JSP+JavaBean) 浏览器 - 请求 - JSP - JavaBean - 数据库 - JavaBean - JSP -响应 - 浏览器 (2) JSP Model2 相⽐JSPModel1,业务流程复杂时,就需要把业务流程控制交给控制器来实现。

即(JSP+Servlet+JavaBean) 浏览器 - 请求 - Servlet - JavaBean- JSP - 数据库 - JavaBean - JSP -Servlet -响应 - 浏览器 MVC处理过程 MVC的整体结构,对于MVC三个部分(模型、视图、控制器)功能职责分别进⾏了相应的阐述 (1)⾸先视图提供系统与⽤户交互的界⾯,并发送⽤户输⼊给控制器 (2)控制器接收⽤户的请求,并决定应该调⽤哪个模型来进⾏处理 (3)模型根据⽤户请求进⾏相应的业务逻辑处理,并返回处理结果(数据) (4)控制器根据返回的处理结果,调⽤相应的视图格式化模型返回的数据,并通过视图呈现给⽤户结果 MVC优缺点1. 优点1. 多视图共享⼀个模型,⼤⼤提⾼代码的可重⽤性2. MVC三个模块相互独⽴,松耦合架构3. 控制器提⾼了应⽤程序的灵活性和可配置性4. 有利于软件⼯程化管理 通过MVC的设计模式最终可以打造出⼀个松耦合+⾼重⽤性+⾼可适⽤性的架构 2.缺点1. 原理复杂2. 增加了系统结构和实现的复杂性3. 视图对模型数据的低效率访问 MVC来说:并不适合⼩型甚⾄中型规模的项⽬,花费⼤量时间将MVC应⽤到规模并不是很⼤的应⽤程序通常得不偿失Spring MVC介绍及其环境搭建 Spring MVC框架介绍 Spring MVC是Spring框架中⽤于Web应⽤开发的⼀个模块,是Spring提供的⼀个基于MVC设计式的优秀Web开发框架,本质上相当于Servlet。

Spring Mvc 课件

Spring Mvc 课件
强大而直接的配置方式:将框架类和应用程序类都能作 为JavaBean配置,支持跨多个context的引用,例如(lìrú) ,在web控制器中对业务对象和验证器(validator)的引 用。
可适配、非侵入:可以根据不同的应用场景,选择合适 的控制器子类 (simple型、command型、form型、wizard 型、multi-action型或者自定义),而不是从单一控制器 (比如Action/ActionForm)继承。
业务模型还有一个很重要的模型那就是数据模型。数据模型主 要指实体对象的数据保存(持续化)。比如将一张订单保存到数据 库,从数据库获取订单。我们可以将这个模型单独列出,所有有关 数据库的操作只限制在该模型中。
第六页,共62页。
MVC设计(shèjì)思想
控制(Controller)可以理解为从用户接收请求, 将模型与 视图匹配在一起,共同完成用户的请求。划分控制层的作用也 很明显,它清楚地告诉你,它就是一个(yī ɡè)分发器,选择 什么样的模型,选择什么样的视图,可以完成什么样的用户请 求。控制层并不做任何的数据处理。
❖ 如果不作其它配置,会加载默认(mòrèn)组件
第二十一页,共62页。
在web.xml配DispatcherServlet
web.xml

<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
第十五页,共62页。
Spring MVC 特点(tèdiǎn)
可定制的本地化和主题(theme)解析:支持在JSP中可选择 地使用Spring标签库、支持JSTL、支持Velocity(不需要 (xūyào)额外的中间层)等等。

基于springbootredirect重定向路径问题总结

基于springbootredirect重定向路径问题总结

基于springbootredirect重定向路径问题总结⽬录SpringMVC重定向视图RedirectView⼩分析前⾔实例讲解Controller代码我们通过firebug看下路径:总结SpringMVC重定向视图RedirectView⼩分析前⾔SpringMVC是⽬前主流的Web MVC框架之⼀。

本⽂所讲的部分内容跟SpringMVC的视图机制有关,SpringMVC的视图机制请参考楼主的另⼀篇博客:RedirectView这个视图是跟重定向相关的,也是重定向问题的核⼼,我们来看看这个类的源码。

路径构造完毕之后使⽤reponse进⾏sendRedirect操作。

实例讲解Controller代码@Controller@RequestMapping(value = “/redirect”)public class TestRedirectController {@RequestMapping("/test1")public ModelAndView test1() {view.setViewName("redirect:index");return view;}@RequestMapping("/test2")public ModelAndView test2() {view.setViewName("redirect:login");return view;}@RequestMapping("/test3")public ModelAndView test3(ModelAndView view) {view.setViewName("redirect:/index");return view;}@RequestMapping("/test4")public ModelAndView test4(ModelAndView view) {view.setView(new RedirectView("/index", false));return view;}@RequestMapping("/test5")public ModelAndView test5(ModelAndView view) {view.setView(new RedirectView("index", false));return view;}@RequestMapping("/test6/{id}")public ModelAndView test6(ModelAndView view, @PathVariable("id") int id) {view.setViewName("redirect:/index{id}");view.addObject(“test”, “test”);return view;}@RequestMapping("/test7/{id}")public ModelAndView test7(ModelAndView view, @PathVariable("id") int id) {RedirectView redirectView = new RedirectView("/index{id}");redirectView.setExpandUriTemplateVariables(false);redirectView.setExposeModelAttributes(false);view.setView(redirectView);view.addObject("test", "test");return view;}先看test1⽅法,返回值 “redirect:index” ,那么会使⽤重定向。

Spring3.0 MVC 中文教程

Spring3.0 MVC 中文教程

Spring3 MVC - 3到Spring MVC框架简介Spring3 MVC框架简介Spring MVC是Spring的框架的Web组件。

它提供了丰富的功能,为建设强大的Web应用程序。

Spring MVC框架的架构,并在这样的高度可配置的方式,每一块的逻辑和功能设计。

此外Spring可以毫不费力地与其他流行的Web框架,如Struts,WebWork的,的Java Server Faces和Tapestry集成。

这意味着,你甚至可以告诉Spring使用Web框架中的任何一个。

比Spring更不紧耦合的servlet或JSP 向客户端呈现视图。

喜欢速度与其他视图技术集成,Freemarker的,Excel或PDF现在也有可能。

Spring3.0 MVC系列∙第1部分:到Spring 3.0 MVC框架简介∙第2部分:在Spring 3.0 MVC创建Hello World应用程序∙第3部分:在Spring 3.0 MVC的形式处理∙第4部分:Spring3 MVC的Tiles Support与Eclipse中的例子插件教程∙第5部分:Spring3 MVC的国际化及本地化教程与范例在Eclipse∙第6部分:Spring3 MVC示例教程Spring主题∙第7部分:创建Spring3 MVC Hibernate 3的示例在Eclipse中使用Maven的在Spring Web MVC,你可以使用任何对象作为命令或表单支持对象,你不需要实现框架特定的接口或基类。

Spring的数据绑定是高度灵活的:例如,将验证错误类型不作为应用系统错误,可以通过评估的不匹配。

因此,你不必重复你的业务对象的属性,简单的无类型的字符串,在表单对象仅仅是为了处理无效的意见,或正确转换的字符串。

相反,它往往是最好直接绑定到业务对象。

请求处理生命周期Spring的Web MVC框架是,像许多其他Web MVC框架,要求为导向,围绕一个中心的servlet,它把请求分派给控制器,提供其他功能,有利于开发Web应用而设计的。

项目技术总结报告

项目技术总结报告

项目技术总结报告一、项目概述本项目是一个旅游平台的开发,旨在为用户提供方便快捷的旅行服务。

在项目开发过程中,我们采用了以下技术来实现平台的各项功能。

二、前端技术1.HTML/CSS:使用HTML和CSS完成平台的页面布局和样式设计,展现出清晰、美观的界面。

2. JavaScript:利用JavaScript实现前端的交互功能,如用户注册、登录、等,并通过AJAX与后端进行数据的交互。

三、后端技术1. Java:作为后端开发的主要语言,使用Java来编写平台的业务逻辑和数据处理部分。

2. Spring框架:采用Spring框架来实现平台的各个模块,包括用户管理、订单管理、景点信息管理等。

3. Spring MVC:使用Spring MVC来处理前后端的数据交互以及请求转发等操作。

4. MyBatis:结合MyBatis框架进行数据库的访问,提高数据库操作的效率和代码的可维护性。

5.MySQL:选择MySQL作为数据库存储平台,使用数据库进行数据的存储和管理。

四、服务器技术1. Tomcat:作为应用服务器,使用Tomcat来部署项目,并提供相应的运行环境。

2. Nginx:作为反向代理服务器,使用Nginx进行负载均衡,提高系统的并发处理能力和稳定性。

五、安全技术1.HTTPS:为了保证用户数据的安全性,采用HTTPS协议进行数据加密传输。

2. Token认证:使用Token认证技术对用户进行身份验证,确保用户的合法性和数据的安全性。

3.SQL注入防护:在后端代码中增加相应的校验和过滤,防止SQL注入攻击。

六、项目成果经过团队的努力,我们成功地完成了旅游平台的开发,并取得了以下成果:1.用户管理:实现用户的注册、登录、注销和信息修改等功能,保障用户的正常使用和数据安全。

2.景点信息管理:提供景点的浏览和功能,用户可以根据自己的需求找到合适的旅行目的地。

3.订单管理:实现用户的订单信息的提交、支付和查询等功能,提供便捷的订单管理服务。

SpringMVC向页面传递参数的4种方式

SpringMVC向页面传递参数的4种方式

SpringMVC向页面传递参数的4种方式1、使用HttpServletRequest和Session 然后setAttribute(),就和Servlet 中一样request.setAttribute(“user”,user_data);2、使用ModelAndView对象@RequestMapping("/login.do")publicModelAndView login(String name,String pass){User user = userService.login(name,pwd);Map<String,Object> data = new HashMap<String,Object>();data.put("user",user);return newModelAndView("success",data);}3、使用ModelMap对象ModelMap数据会利用HttpServletRequest的Attribute传值到success.jsp中@RequestMapping("/login.do")public String login(String name,String pass ,ModelMapmodelMap){User user =userService.login(name,pwd);modelMap.addAttribute("user",user);modelMap.put("name",name);return "success";}Session存储,可以利用HttpServletReequest的getSession()方法@RequestMapping("/login.do")Public String login (String name,Stringpwd,ModelMapmodel,HttpServletRequest request) {User user = serService.login(name,pwd);HttpSession session = request.getSession();session.setAttribute("user",user);model.addAttribute("user",user);return "success";}4、使用@ModelAttribute注解@ModelAttribute数据会利用HttpServletRequest的Attribute传值到success.jsp中@RequestMapping("/login.do")public String login(@ModelAttribute("user") User user){return "success";}@ModelAttribute("name")public String getName(){return name;}Spring MVC 默认采用的是转发来定位视图,如果要使用重定向,可以如下操作A、使用RedirectViewpublicModelAndView login(){RedirectView view = new RedirectView("regirst.do");return newModelAndView(view);}B、使用redirect:前缀public String login(){return "redirect:regirst.do";}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、前言:大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了。

Spring3 MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,性能也很优秀。

官方的下载网址是:/download(本文使用是的Spring 3.0.5版本)Struts2也是比较优秀的MVC构架,优点非常多比如良好的结构。

但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降。

Struts2的多层拦截器、多实例action性能都很好。

可以参考我写的一篇关于Spring MVC与Struts2与Servlet比较的文章/admin/blogs/698217Spring3 MVC的优点:1、Spring3 MVC的学习难度小于Struts2,Struts2用不上的多余功能太多。

呵呵,当然这不是决定因素。

2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分)3、Spring3 MVC的灵活是你无法想像的,Spring的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。

Struts2的众多优点:略... (呵呵,是不是不公平?)众多文章开篇时总要吹些牛,吸引一下读者的眼球,把读者的胃口调起来,这样大家才有兴趣接着往后看。

本文也没能例外。

不过保证你看了之后不会后悔定有收获。

二、核心类与接口:先来了解一下,几个重要的接口与类。

现在不知道他们是干什么的没关系,先混个脸熟,为以后认识他们打个基础。

DispatcherServlet -- 前置控制器HandlerMapping接口-- 处理请求的映射HandlerMapping接口的实现类:SimpleUrlHandlerMapping 通过配置文件,把一个URL映射到Controller DefaultAnnotationHandlerMapping 通过注解,把一个URL映射到Controller类上HandlerAdapter接口-- 处理请求的映射AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上Controller接口-- 控制器由于我们使用了@Controller注解,添加了@Controller注解注解的类就可以担任控制器(Action)的职责,所以我们并没有用到这个接口。

HandlerInterceptor 接口--拦截器无图,我们自己实现这个接口,来完成拦截的器的工作。

ViewResolver接口的实现类UrlBasedViewResolver类通过配置文件,把一个视图名交给到一个View来处理InternalResourceViewResolver类,比上面的类,加入了JSTL的支持View接口JstlView类LocalResolver接口HandlerExceptionResolver接口--异常处理SimpleMappingExceptionResolver实现类ModelAndView类无图。

三、核心流程图:本图是我个人画的,有不严谨的地方,大家对付看吧。

总比没的看强。

四、DispatcherServlet说明:使用Spring MVC,配置DispatcherServlet是第一步。

DispatcherServlet是一个Servlet,所以可以配置多个DispatcherServlet。

DispatcherServlet是前置控制器,配置在web.xml文件中的。

拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据某某规则分发到目标Controller(我们写的Action)来处理。

“某某规则”:是根据你使用了哪个HandlerMapping接口的实现类的不同而不同。

先来看第一个例子:Xml代码1.<web-app>2.<servlet>3.<servlet-name>example</servlet-name>4.<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>5.<load-on-startup>1</load-on-startup>6.</servlet>7.<servlet-mapping>8.<servlet-name>example</servlet-name>9.<url-pattern>*.form</url-pattern>10.</servlet-mapping>11.</web-app><load-on-startup>1</load-on-startup>是启动顺序,让这个Servlet随Servletp容器一起启动。

<url-pattern>*.form</url-pattern>会拦截*.form结尾的请求。

<servlet-name>example</servlet-name>这个Servlet的名字是example,可以有多个DispatcherServlet,是通过名字来区分的。

每一个DispatcherServlet有自己的WebApplicationContext上下文对象。

同时保存的ServletContext中和Request对象中,关于key,以后说明。

在DispatcherServlet的初始化过程中,框架会在web应用的WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml 的配置文件,生成文件中定义的bean。

第二个例子:Xml代码1.<servlet>2.<servlet-name>springMVC</servlet-name>3.<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>4.<init-param>5.<param-name>contextConfigLocation</param-name>6.<param-value>classpath*:/springMVC.xml</param-value>7.</init-param>8.<load-on-startup>1</load-on-startup>9.</servlet>10.<servlet-mapping>11.<servlet-name>springMVC</servlet-name>12.<url-pattern>/</url-pattern>13.</servlet-mapping>指明了配置文件的文件名,不使用默认配置文件名,而使用springMVC.xml配置文件。

其中<param-value>**.xml</param-value>这里可以使用多种写法1、不写,使用默认值:/WEB-INF/<servlet-name>-servlet.xml2、<param-value>/WEB-INF/classes/springMVC.xml</param-value>3、<param-value>classpath*:springMVC-mvc.xml</param-value>4、多个值用逗号分隔Servlet拦截匹配规则可以自已定义,Servlet拦截哪种URL合适?当映射为@RequestMapping("/user/add")时:1、拦截*.do,例如:/user/add.do,弊端:所有的url都要以.do结尾。

不会影响访问静态文件。

2、拦截/app/*,例如:/app/user/add,弊端:请求的url都要包含/app,@RequestMapping("/user/add")中不须要包含/app。

3、拦截/,例如:/user/add,弊端:对jpg,js,css静态文件的访问也被拦截不能正常显示。

后面有解决办法。

4、拦截/*,可以走到Action中,但转发到jsp时再次被拦截,不能访问到jsp。

五、双亲上下文的说明:如果你使用了listener监听器来加载配置,一般在Struts+Spring+Hibernate的项目中都是使用listener监听器的。

如下Java代码1.<listener>2. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>3.</listener>Spring会创建一个全局的WebApplicationContext上下文,称为根上下文,保存在ServletContext中,key是WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE属性的值。

可以使用工具类取出上下文:WebApplicationContextUtils.getWebApplicationContext(ServletContext);DispatcherServlet是一个Servlet,可以同时配置多个,每个DispatcherServlet有一个自己的WebApplicationContext上下文,这个上下文继承了根上下文中所有东西。

保存在ServletContext中,key是"org.springframework.web.servlet.FrameworkServlet.CONTEXT"+Servlet名称。

当一个Request对象产生时,会把这个WebApplicationContext上下文保存在Request对象中,key是DispatcherServlet.class.getName() + ".CONTEXT"。

相关文档
最新文档