spring mvc 如何请求转发和重定向呢?往下看:
由于这部分内容简单,一带而过了。
1.请求转发:
(1)返回ModelAndView :
@RequestMapping(value="/model",method=RequestMethod.GET)
public ModelAndView testForward(ModelAndView model,@RequestParam(value="id",defaultValue="1",required=false)Long id){
User u = getBaseService().get(User.class, id);
model.addObject("user", u);
model.setViewName("forward:index.jsp");
return model;
}
如上代码,如果返回modelAndView 则可以如红色标注,添加forward即可,若想重定向,可把forward替换成redirect便可达到目的。
(2)返回字符串
@RequestMapping(value="/forward",method=RequestMethod.GET)
public String testForward(){
return "forward:/index.action";
}
如上代码红色部分。
2.请求重定向
对于请求转发可以分为:1.带参数 2.不带参数
(1)带参数:
@RequestMapping(value="/redirect",method=RequestMethod.GET)
public String testRedirect(RedirectAttributes attr){
attr.addAttribute("a", "a");
attr.addFlashAttribute("b", "b");
return "redirect:/index.action";
}
带参数可使用RedirectAttributes参数进行传递:
注意:1.使用RedirectAttributes的addAttribute方法传递参数会跟随在URL后面 ,如上代码即为http://****/index.action?a=a
2.使用addFlashAttribute不会跟随在URL后面,会把该参数值暂时保存于session,待重定向url获取该参数后从session中移除,这里的redirect必须是方法映射路径,jsp无效。你会发现redirect后的jsp页面中b只会出现一次,刷新后b再也不会出现了,这验证了上面说的,b被访问后就会从session中移除。对于重复提交可以使用此来完成.
另外,如果使用了RedirectAttributes作为参数,但是没有进行redirect呢?这种情况下不会将RedirectAttributes参数传递过去,默认传forward对应的model,官方的建议是:
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"
p:ignoreDefaultModelOnRedirect="true" />
设置下RequestMappingHandlerAdapter 的ignoreDefaultModelOnRedirect属性,这样可以提高效率,避免不必要的检索。
(2)无参数
@RequestMapping(value="/redirect",method=RequestMethod.GET)
public String testRedirect(){
return "redirect:/index.action";
}
分享到:
相关推荐
在Java Web开发中,"重定向"(Redirect)和"转发"(Forward)是两种常见的处理请求的方法,它们用于在服务器端控制用户浏览器的行为。理解并熟练掌握这两者对于Java初学者至关重要,因为它们在构建动态网站时起着...
Forword Tdesign
在Spring Security框架中,自定义成功失败处理器是用于定制用户登录认证后的响应行为。默认情况下,Spring Security提供了标准的处理程序来处理用户的登录成功或失败情况,但有时我们需要根据业务需求进行个性化设置...
在开发Web应用时,我们经常会遇到“forward”和“redirect”的概念,它们是两种不同的页面跳转方式。理解和掌握它们的区别对于优化用户交互和处理请求流至关重要。 **forward(转发)**: - 转发是由服务器端完成的...
7. **forword与redirect**:`RequestDispatcher.forward()`在服务器端完成跳转,URL不变,适合内部资源跳转;`response.sendRedirect()`是客户端重定向,URL可见变化,适用于外部资源跳转。 8. **Struts配置文件**...
本篇文章将深入探讨一个名为"FindCatch_forword_zip_"的Matlab程序,它主要用于解决此类问题。 Matlab,全称矩阵实验室,是一种强大的数值计算和可视化工具,特别适合进行复杂的数学运算和数据分析。在机器人学领域...
在 Springboot 中,转发可以使用两种方式实现:使用 "forword" 关键字和使用 Servlet 提供的 API。 1. 使用 "forword" 关键字 使用 "forword" 关键字可以实现请求的转发。例如: ```java @RequestMapping(value="/...
Struts2作为MVC框架,其核心是Action,它负责处理请求和业务逻辑。当一个请求到达服务器时,Struts2的前端控制器(通常是一个Servlet,如`StrutsPrepareAndExecuteFilter`)拦截请求,并根据配置文件(struts.xml)...
7. Forword与Redirect:Forward是内部跳转,服务器资源的直接调用,客户端浏览器地址栏不会改变;Redirect是外部跳转,浏览器发起新的HTTP请求,地址栏会显示新URL。 8. Jquery总结:jQuery是一个轻量级的...
在C++编程中,`forward_list`是一种单链表数据结构,它被包含在C++标准库中的`<forward_list>`头文件里。这个数据结构主要用于实现无序、线性序列,与`std::list`不同,`forward_list`不支持双向遍历,只能向前遍历...
在这个过程中,`forward`和`redirect`是两种常见的服务器端处理用户请求的方法。本文将详细讲解如何使用IntelliJ IDEA(Idea)来实现这个功能,并探讨它们的工作原理。 首先,让我们了解一下`forward`和`redirect`...
"forword_it_datascience_batch_6th" 是一个针对数据科学的学习资源包,它代表了Forword IT在数据科学教育领域的第六批课程内容。这个批处理文件很可能包含了多个学习单元,旨在帮助学员掌握数据科学的核心技能。...
// ResultSet.TYPE_FORWORD_ONLY:只进游标 // ResultSet.TYPE_SCROLL_INSENSITIVE:可滚动。但是不受其他用户对数据库更改的影响。 // ResultSet.TYPE_SCROLL_SENSITIVE:可滚动。当其他用户更改数据库时这个记录也会...
这个框架集合了MVC模式的Struts、依赖注入与事务管理的Spring以及对象关系映射的Hibernate,提供了高效且灵活的开发环境。在MyEclipse中搭建SSH框架,可以极大地提高开发效率,简化项目的结构。 **1. 新建工程** ...
all_libtorch_forward.tar.xz
很实用的forward操作应用手册,可以在官网上下载到,不过需要虚拟打印机转化一下,有点儿麻烦.pdf文件将近100mb有点儿大,只能上传50mb以下的文件,所以拆成两部分上传了,part1和part2,第一部分1分,第二部分不用...
加強Forword-Mail/MailList的分類管理 6.加入匯入文字檔帳號密碼的功能,快速轉移你的舊EMail Address (Ps:文字格式:帳號稱謂,帳號,密碼,) 7.加入針對垃圾郵件進行過濾的功能,並可設定關鍵字;並對垃圾郵件進行分類...
在Java Web应用开发中,`jsp:forward`动作是一个重要的组件,用于实现页面间的转发。这个课堂案例旨在帮助学生理解并掌握如何在JSP文件中有效地使用`jsp:forward`动作,以及它在页面跳转中的作用。...
PC端与Android手机端使用adb forword通信 服务器端代码如下: import java.io.IOException; import java.io.ObjectOutputStream; import java.net.Socket; import java.net.UnknownHostException; import java.util...
Struts标记库是Java开发Web应用时常用的工具,它提供了许多预定义的JSP标签,使得开发者能够更方便地创建MVC(Model-View-Controller)架构的应用程序。这些标签简化了HTML表单的处理,使得与Struts框架的交互更为...