SpringMVC用Post方式重定向
正常会以return “redirect:/XXX”这种方式直接重定向,但是这种方式是Get方式提交。
然而有些业务为了安全性必须要Post方式重定向。
Post方式重定向
我尝试过的方法:
1 2 3 4 5 6 7 | /** * 请求进行重定向 */ @RequestMapping (value = “postPayAmount”, method = RequestMethod.GET) public RedirectView postPayAmount(HttpSession session,ModelMap map) { return new RedirectView(WsUrlConf.URI_PAY, true , false , false ); //最后的参数为false代表以post方式提交请求 } |
以上方法并不好用,我看了作者写的另一个解决办法
1、先封装一个Form,用他来发Post请求。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | /** * @Description: 后台进行POST请求(请写在代码执行结尾) * @return void 返回类型 */ public static void doBgPostReq(HttpServletResponse response,String postUrl,Map paramMap) throws IOException { response.setContentType( "text/html;charset=utf-8" ); PrintWriter out = response.getWriter(); out.println( "" ); for (String key : paramMap.keySet()) { out.println( "" ); } out.println( "" ); out.println( "" ); out.println( " document.postSubmit.submit()" ); out.println( "" ); } |
2、在控制层直接调用
1 2 3 4 5 6 7 8 9 10 11 12 13 | /** * 进行请求 * @param request * @return * @throws IOException */ @RequestMapping (value = "doPostRedirectView.do" , method = RequestMethod.GET) @ResponseBody public void doPostRedirectView(HttpServletRequest request,HttpServletResponse response,ModelMap map) throws IOException { logger.debug( "-----进入了doPostRedirectView----" ); map.put( "aaa" , "aaaa" ); HttpUtils.doBgPostReq(response, "doPostReq.do" , map); } |
SpringMVC的Post提交405错误,只能使用重定向方式
前端文件
1 | |
后端控制器类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | @Controller public class SpringMvcController { @RequestMapping (path = "welcome1" ,method = RequestMethod.POST) public String welcome1(){ return "success" ; //默认使用请求转发 } @RequestMapping (path = "welcome2" ,method = RequestMethod.POST) public String welcome2(){ return "redirect:success.html" ; //使用重定向 } } |
使用@PostMapping注解的方式也一样。
配置类
1 2 3 4 5 6 7 | # 应用名称 spring.application.name=sringmvc-blog # 应用服务 WEB 访问端口 server.port= 8081 # 后缀名 spring.mvc.view.suffix=.html |
要跳转的success.html页面
1 | < h1 >springMVC 的 post</ h1 > |
运行页面:
结果
请求转发的方式:
重定向的方式:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持IT俱乐部。