请求重定向与请求转发的比较,HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有很大的区别。
1.RequestDispatcher.forward方法只能将请求转发给同一个Web应用中的组件,HttpServletResponse.sendRedirect不仅可以重定向到当前应用程序的其他资源,还可以重定向到痛一个站点上的其他应用程序的资源,甚至是使用绝对URL重定向到其他站点的资源。对于sendRedirect如果传递的URL以"/"开头,他是相对于整个Web站点的根目录;对于forward如果传递的URL以"/"开头,它是相对于当前Web应用程序的根目录。
2.sendRedirect对浏览器做出的响应是重新发出对另外一个URL的访问请求,forward在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果
3.forward的调用者与被调用者之间共享相同的request对象和response对象,他们属于痛一个访问请求和响应过程;sendRedirect的调用者与被调用者使用各自的request和response对象,属于两个独立的访问请求和响应过程
请求重定向以redirect:开头,请求转发以forward:开头;
@RequestMapping(value="/uriTemplate", method=RequestMethod.GET)
public String uriTemplate(RedirectAttributes redirectAttrs) {
redirectAttrs.addAttribute("account", "a123"); // Used as URI template variable
redirectAttrs.addAttribute("date", new LocalDate(2011, 12, 31)); // Appended as a query parameter
return "redirect:/redirect/{account}";
}
@RequestMapping(value="/uriComponentsBuilder", method=RequestMethod.GET)
public String uriComponentsBuilder() {
String date = this.conversionService.convert(new LocalDate(2011, 12, 31), String.class);
UriComponents redirectUri = UriComponentsBuilder.fromPath("/redirect/{account}").queryParam("date", date)
.build().expand("a123").encode();
return "redirect:" + redirectUri.toUriString();
}
@RequestMapping(value="/{account}", method=RequestMethod.GET)
public String show(@PathVariable String account, @RequestParam(required=false) LocalDate date) {
return "redirect/redirectResults";
}
// http://127.0.0.1:8010/redirect/forward
@RequestMapping(value="/forward", method=RequestMethod.GET)
public String forward() {
return "forward:/welcome";
}
分享到:
相关推荐
**Spring MVC 3.2 案例讲解——配置** Spring MVC 是 Spring 框架的一个模块,专门用于处理Web应用程序的请求-响应模式。在3.2版本中,Spring MVC引入了一些重要的改进和增强,使得开发更加高效和灵活。本篇文章将...
Spring MVC 是一个强大的Java Web开发框架,用于构建高效、可维护的Web应用程序。它基于Spring框架,提供了模型-视图-控制器(MVC)架构,简化了开发过程。本资源"Spring MVC step-by-step 源码"是针对初学者准备的...
spring mvc 3.2 + mybatis3.2 + jsp + jstl + jquery + OSCache + freeMarker + mysql 用户登陆用统一的认证登陆接口:shiro; 前台用freeMarker 模板,还有 jsp!
dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis, dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis整合
1. **下载与解压**:首先,你需要下载《spring-framework-3.2.x-for-eclipse.rar》压缩包,解压后会得到一个包含Spring源码的目录。 2. **导入项目**:启动Eclipse,选择菜单栏的"File" -> "Import",然后在弹出的...
在"baseArch"这个文件夹中,可能包含了项目的基本架构,包括pom.xml文件、Spring配置文件(如applicationContext.xml、spring-servlet.xml)、MyBatis的Mapper接口和XML配置、Spring Security的配置文件,以及可能的...
在"spring-mvc-test-sample-master.zip"这个压缩包中,我们很可能是得到了一个Spring MVC测试项目的源码示例,旨在帮助开发者更好地理解和应用Spring MVC。 首先,让我们深入理解Spring MVC的核心概念: 1. **...
这个项目应该是一个简单的Web应用程序,它允许开发者通过Spring MVC处理前端请求,并利用Mybatis作为持久层框架与数据库进行交互。现在,我们来详细探讨这两个框架以及它们的整合。 **Mybatis 3.2.2** Mybatis是一...
这个压缩包"translation-spring-mvc-4-documentation, Spring MVC 4.2.4 RELEASE 中文文档完整翻译稿.zip"包含了Spring MVC 4.2.4版本的官方文档的中文全译版,这对于中文开发者来说是一个极其宝贵的资源,它可以...
7.Spring MVC 请求转发与请求重定向案例 8.Spring MVC 下载 Excel 文档的需求案例 9.Spring MVC RESTful 风格的请求方式案例 10.Spring + Spring MVC + JDBCTemplate 整合并通过 RESTful 风格获取所有用户信息案例 ...
在实际的开发过程中,你可能会遇到如国际化、数据验证、异常处理、视图重定向等场景,Spring MVC都提供了相应的机制来处理。例如,使用@ExceptionHandler注解可以捕获并处理特定类型的异常,而使用Model对象可以方便...
Spring MVC 是一个强大的Java web开发框架,主要用于构建模型-视图-控制器(MVC)架构的应用程序。在Spring 3.2版本中,它提供了一系列高级特性和功能,旨在简化开发流程并提高代码的可维护性和灵活性。 核心组件是...
spring-webmvc-5.0.9.RELEASE-sources.jar则包含了源码,可以深入研究Spring Web MVC的实现细节,对于学习和调试都非常有帮助。 九、依赖管理 在实际项目中,Spring Web MVC往往与其他Spring模块如Core、AOP、Data...
在实际开发中,Spring MVC常与其他Spring模块结合使用,如Spring Data用于数据库访问,Spring Security进行权限控制,Spring AOP实现切面编程等。此外,Spring Boot进一步简化了Spring MVC的配置,使得快速开发Web...
- **Spring MVC 架构**:理解 MVC 模式如何与 Spring 集成,以及如何实现控制层和视图层。 - **Controller 实现**:创建和配置控制器类,定义请求映射和处理器方法。 - **View Resolver 配置**:设置视图解析器,以...
Spring Web MVC模块(spring-webmvc-5.2.3.RELEASE.jar)是Spring框架中用于构建MVC(Model-View-Controller)架构的Web应用程序的核心部分。它为Web开发提供了一种强大且灵活的模型绑定、数据验证、异常处理和视图...
本教程中的"Spring-MVC-step-by-step.pdf"文件将详细介绍上述概念,并通过实例代码演示如何配置和使用Spring MVC,帮助你一步步实践每个知识点。 总之,Spring MVC是Java Web开发的强大工具,理解并掌握其工作原理...
《Spring 3.2在Eclipse Mars 4.5与Java 7环境下的应用详解》 Spring框架作为Java开发中的核心组件,其3.2版本是面向企业级应用的重要里程碑。该版本在功能上进行了诸多优化,提高了性能,并且对Java 7提供了全面...
9. **模板引擎集成**:Spring MVC 3.2与各种模板引擎(如Thymeleaf、FreeMarker、Velocity等)有良好的集成,方便创建动态视图。 10. **性能优化**:该版本对DispatcherServlet进行了优化,减少了内存消耗,提高了...
5. **ORM集成**:Spring MVC 3.2与Hibernate、MyBatis等ORM框架有良好的集成,简化了对象关系映射的处理,提高了开发效率。 6. **MVC注解**:Spring MVC 3.2进一步推广了注解驱动的开发,如@Controller、@...