spring mvc 重定向,转发和传参

重定向:

(1)第一种情况:不需要传递参数。

方式一:使用ModelAndView
return new ModelAndView("redirect:/toList");
这样可以重定向到toList这个方法

方式二:返回String
return "redirect:/ toList ";

(2)第二种情况:带参数

拼接url,用RedirectAttributes,这里用它的addAttribute方法,这个实际上重定向过去以后你看url

,是它自动给你拼了你的url。
使用方法:

attr.addAttribute("param", value);
return "redirect:/namespace/toController";

这样在toController这个方法中就可以通过获得参数的方式获得这个参数,再传递到页面。

不拼接url:

@RequestMapping("/save")
public String save(@ModelAttribute("form") Bean form,RedirectAttributes attr)
throws Exception {

String code = service.save(form);
if(code.equals("000")){
attr.addFlashAttribute("name", form.getName());
attr.addFlashAttribute("success", "添加成功!");
return "redirect:/index";
}else{
attr.addAttribute("projectName", form.getProjectName());
attr.addAttribute("enviroment", form.getEnviroment());
attr.addFlashAttribute("msg", "添加出错!");
return "redirect:/maintenance/toAddConfigCenter";
}
}

注意: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,官方的建议是:

p:ignoreDefaultModelOnRedirect="true" />

设置下RequestMappingHandlerAdapter 的ignoreDefaultModelOnRedirect属性,这样可以提高效率

,避免不必要的检索。

当保存POJO到数据库后,要返回成功页面,如果这个时候要带点信息,则要这样:

@RequestMapping(value = "/user/save", method = RequestMethod.POST)

public ModelAndView saveUser(UserModel user, RedirectAttributes redirectAttributes)

throws Exception {

redirectAttributes.addFlashAttribute("message", "保存用户成功!");//使用

addFlashAttribute,参数不会出现在url地址栏中

return "redirect:/user/save/result";

}

转发:

返回ModelAndView :
@RequestMapping(value="/test",method=RequestMethod.GET)
public ModelAndView testForward(ModelAndView model){

model.setViewName("forward:index.jsp");
return model;
}

如上代码,如果返回modelAndView 则可以如红色标注,添加forward即可,若想重定向,可把

forward替换成redirect便可达到目的。

返回String:

@RequestMapping(value="/forward",method=RequestMethod.GET)
public String testForward(){

return "forward:/index.action";
}

时间: 2024-12-07 10:59:04

spring mvc 重定向,转发和传参的相关文章

Spring MVC 多文件上传大小限制及异常处理

Spring MVC  多文件上传大小限制及异常处理 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 在 spring mvc 的默认配置文件 WEB-INF/xxx-servlet.xml 中

【Spring学习笔记-MVC-13】Spring MVC之文件上传

作者:ssslinppp       1. 摘要 Spring MVC为文件上传提供了最直接的支持,这种支持是通过即插即用的MultipartResolve实现的.Spring使用Jakarta Commons FileUpload技术实现了一个MultipartResolver实现类:CommonsMultipartResolver. 下面将具体讲解Spring MVC实现文件上传的具体步骤. 2. 添加Jar包 Spring MVC文件上传,需要添加如下两个jar包: commons-fil

spring mvc ajaxfileupload文件上传返回json下载问题

问题:使用spring mvc ajaxfileupload 文件上传在ie8下会提示json下载问题 解决方案如下: 服务器代码: @RequestMapping(value = "/addAnalysis", method = RequestMethod.POST) public void addAnalysisUI( HttpServletResponse response,HttpServletRequest request,HttpSession session, @Requ

Spring MVC多图片上传,多值上传

servlet-context.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.spr

spring mvc 重定向加传参

常用: ModelAndViewi: return new ModelAndView("redirect:/toList");  或者 ii:return "redirect:/toList"; 或者 iii:response.sendRedirect("index.html"); 1. 需求背景    需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页

spring mvc 请求转发和重定向

spring mvc controller间跳转 重定向 传参 url:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ 1. 需求背景    需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. 本来以为挺简单的一件事情,并且个人认为比较常用的一种方式,一百度全都有了,这些根本不是问题,但是一百度居然出乎我的意料

Spring MVC重定向和转发以及异常处理

SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于请求转发的页面,也可以是WEB-INF中页面:对于重定向的页面,不能为WEB-INF中的页面.因为重定向相当于用户再次发出一次请求,而用户是不能直接访问WEB-INF中资源的 1)重定向到页面 FirstController.java package cn.controller; import or

Spring MVC重定向和转发及异常处理

SpringMVC核心技术---转发和重定向 当处理器对请求处理完毕后,向其他资源进行跳转时,有两种跳转方式:请求转发与重定向.而根据要跳转的资源类型,又可分为两类:跳转到页面与跳转到其他处理器.对于请求转发的页面,也可以是WEB-INF中页面:对于重定向的页面,不能为WEB-INF中的页面.因为重定向相当于用户再次发出一次请求,而用户是不能直接访问WEB-INF中资源的 1)重定向到页面 FirstController.java package cn.controller; import or

spring mvc重定向

一.不带参数,直接重定向到另一个地址: 返回String直接跳转,如: @RequestMapping(value = "/filehandle") public String upload(){ return "redirect:/upload.jsp"; } 或者使用使用ModelAndView跳转 @RequestMapping(value = "/filehandle") public ModelAndView upload(){ ret