`

spring MVC 转向(重定向)

 
阅读更多

 spring控制器最后返回一个ModelAndView(urlName),其中urNamel可以是一个视图名称,由视图解析器负责解析后将响应流写回客户端;也可以通过redirect/forward:url方式转到另一个控制器进行处理.

redirect方式相当于"response.sendRedirect()".这种方式外部特征就是浏览器地址栏最后显示的路径是转发后的新的路径.工作方式是这样的, 服务器端会首先发一个response给浏览器, 然后浏览器收到这个response后再发一个requeset给服务器, 然后服务器发新的response给浏览器. 这时页面收到的request是一个新从浏览器发来的.这种方式的结果是:

  • A.在转发前后有两个不同的request对象,转发前后的两个控制器在request上的参数(request.getParameter())和request属性(request.getAttribute())不能共享;
  • B.如果转发前后的两个控制器都配置在spring 拦截器范围内,这样拦截器会拦截前后两个request,即会拦截两次;
  • C.最后返回到浏览器后,因为地址栏显示的是转发后的url,所以刷新页面时只会执行后面的url映射的控制器.

 forward方式相当于request.getRequestDispatcher().forward(request,response) .这种方式的外部特征是浏览器地址显示的路径是转发前的路径.工作方式是这样,forward 发生在服务器内部,在前一个控制器处理完毕后,直接进入下一个控制器处理, 并将最后的response发给浏览器. 这种方式的结果是:
  • A.转发前后是同一个request,后一个控制器可共享前一个控制器的参数与属性;
  • B.因为是同一个request,拦截器只会拦截前一个url,如果前一个url在映射时未配置到拦截器拦截,则拦截后一个url,即只拦截一次;
  • C.最后返回到浏览器后,因为地址栏显示的是转发前的url,所以刷新页面时会依次执行前后两个控制器.

分享到:
评论
1 楼 qzlijian 2013-04-27  
   

相关推荐

    spring—MVC的注解实例

    接下来,我们将注意力转向Spring MVC的核心配置文件——`spring-servlet.xml`。在这里,我们主要是配置控制器(Controller)的信息。Spring 3.0引入了基于注解的配置,使得我们不再需要为每个控制器创建单独的bean...

    ASP.NET MVC页面重定向简单介绍

    在asp.net中页面重定向:Server.Execute(“m2.aspx”); 服务器保存此页转向前的数据后,使页面转向到m2.aspx执行, 再返回本页继续执行.再将三者结果合并后返回给浏览器. 以上都是服务器端页面转向所以浏览器不出现页...

    auth0-spring-mvc-sample:Java Spring MVC Web应用程序的Auth0集成示例

    不幸的是,根据描述,此示例已弃用,不再推荐用于新开发,而是建议开发者转向更新的Spring Boot 2版本进行身份验证的集成。 **Auth0简介** Auth0是一个云身份管理平台,提供用户身份验证、授权以及单一登录...

    SpringMVC之表单提交===①===普通表单

    在Spring MVC中,表单提交的处理通常涉及以下组件: 1. **Controller** - 控制器类是Spring MVC的核心组件,它负责接收HTTP请求并进行相应的处理。在处理表单提交时,控制器会有一个方法,通常使用`@RequestMapping...

    spring暗示

    在IT行业中,Spring框架是Java企业级应用开发的首选,而Struts2则是早期非常流行的MVC框架之一。本文将围绕这两个框架的核心知识点进行详细阐述,以帮助你在面试或日常工作中更好地理解和应用它们。 首先,让我们...

    spring+hibernate+struts

    标题中的"spring+hibernate+struts"指的...尽管现代Web开发可能更多地转向Spring Boot、Spring Data JPA和Thymeleaf等新技术,但理解这些传统框架的运作原理和整合方式,对于Java开发者的成长仍然具有重要的参考价值。

    spring boot 拦截器拦截/Filter 过滤session案例

    拦截器是Spring MVC中的一个概念,它提供了一种预处理和后处理请求的方法。在Spring Boot中,我们可以通过实现`HandlerInterceptor`接口或继承`AbstractHandlerInterceptorAdapter`类来创建自定义拦截器。拦截器通常...

    ssh面试宝典

    SSH面试宝典主要涵盖的是Java Web开发中三大框架——Struts、...同时,随着技术的发展,现代Web开发更多地转向Spring Boot和Spring MVC的最新版本,以及使用RESTful API,面试中也可能涉及到这些现代框架和设计模式。

    IdeaProjects.zip

    除此之外,Spring MVC是其Web开发的一部分,提供了一个模型-视图-控制器(MVC)架构,用于构建高效、灵活的Web应用程序。 Spring框架还提供了对单元测试和集成测试的强大支持,帮助开发者确保代码的质量和稳定性。...

    SpringMvc响应数据及结果视图实现代码

    // 使用 request 转向页面 request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response); // 或者使用 response 页面重定向 response.sendRedirect("testRetrunString"); // 或者...

    java上传下载

    在Java Web开发中,尤其是使用MVC架构(如Struts或Spring MVC)时,Action类负责接收用户请求,执行业务逻辑,并返回响应。在这个上下文中,`UploadAction`可能会包含处理HTTP POST请求的方法,这些请求携带了要上传...

    Spring学习笔记2之表单数据验证、文件上传实例代码

    在Spring MVC中,这可以通过使用JSR 303/349 Bean Validation标准来实现,该标准定义了一组注解,允许开发者直接在模型类的属性上定义验证规则。 1. **Bean Validation 注解**: - `@NotNull`:验证字段是否非空,...

    struts1完整demo

    Struts1是一个经典的Java Web开发框架,由...这对于理解MVC架构和Java Web开发有着重要的价值,尽管现代Web开发更多地转向了Spring MVC和React等新技术,但掌握Struts1的基本原理仍然是提升开发者技能的重要一步。

    struts1直接跳转到jsp-无action的url

    Struts1是一个经典的Java Web框架,它在20世纪末至21世纪初非常流行,为开发者提供了MVC(Model-...在现代开发中,更推荐使用Struts2或者其他如Spring MVC、Spring Boot等更新的框架,它们提供了更好的结构和功能支持。

    JavaWeb电子教案

    在JavaWeb中,Struts、Spring MVC和JSF等框架都实现了这一模式,以分离业务逻辑、视图呈现和数据访问,提高代码的可维护性和可扩展性。 此外,压缩包中的源程序将为你提供实际操作的机会,通过阅读和运行代码,你...

    【struts1.x-2.0】-jar包大全

    然而,随着Spring Boot等现代框架的崛起,Struts框架的使用已经逐渐减少,更多地转向了Spring MVC和Spring Boot这样的全栈解决方案。尽管如此,理解Struts的基础知识对于理解MVC模式和Java Web开发的历史进程仍然是...

    struts1.2+hibernate开发的小项目

    Struts1.2和Hibernate是两个非常经典...不过,要注意的是,由于Struts1.2已经较为老旧,现在更多的项目转向了Spring MVC等更现代的框架,因此,学习此项目的同时,也要关注新技术的发展,以便适应不断变化的开发环境。

    struts1.2核心源码

    Struts1.2是Apache软件基金会的Jakarta项目下...同时,对于那些想要转向更现代的MVC框架,如Spring MVC或Play Framework的开发者来说,理解Struts1.2的工作原理也是很有帮助的,因为这些概念在很多现代框架中依然适用。

    struts1.3.10 全部jar

    然而,需要注意的是,Struts 1.x已经不再维护,现代Web开发更多转向了Struts 2或者其他更现代的框架,如Spring MVC或Play Framework。尽管如此,对于理解MVC架构和Web应用程序的基础,Struts 1.x仍然是一个重要的...

Global site tag (gtag.js) - Google Analytics