SpringMVC如何用Post方式重定向
更新时间:2022年10月26日 10:19:15 作者:贺总的好兄弟
这篇文章主要介绍了SpringMVC如何用Post方式重定向,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
SpringMVC用Post方式重定向
正常会以return "redirect:/XXX"这种方式直接重定向,但是这种方式是Get方式提交。
然而有些业务为了安全性必须要Post方式重定向。
Post方式重定向
我尝试过的方法:
/** * 请求进行重定向 */ @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请求。
/** * @Description: 后台进行POST请求(请写在代码执行结尾) * @return void 返回类型 */ public static void doBgPostReq(HttpServletResponse response,String postUrl,Map<String, ?> paramMap) throws IOException { response.setContentType( "text/html;charset=utf-8"); PrintWriter out = response.getWriter(); out.println("<form name='postSubmit' method='post' action='"+postUrl+"' >"); for (String key : paramMap.keySet()) { out.println("<input type='hidden' name='"+key+"' value='" + paramMap.get(key)+ "'>"); } out.println("</form>"); out.println("<script>"); out.println(" document.postSubmit.submit()"); out.println("</script>"); }
2、在控制层直接调用
/** * 进行请求 * @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错误,只能使用重定向方式
前端文件
<form action="welcome1" method="post"> <input type="submit" value="post-请求转发"> </form> <br> <br> <form action="welcome2" method="post"> <input type="submit" value="post-重定向"> </form>
后端控制器类
@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注解的方式也一样。
配置类
# 应用名称 spring.application.name=sringmvc-blog # 应用服务 WEB 访问端口 server.port=8081 # 后缀名 spring.mvc.view.suffix=.html
要跳转的success.html页面
<h1>springMVC 的 post</h1>
运行页面:
结果
请求转发的方式:
重定向的方式:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
解决调用ftpClient.retrieveFileStream(String remoteFilePath)第二次读
这篇文章主要给大家介绍了关于如何解决调用ftpClient.retrieveFileStream(String remoteFilePath)第二次读取为空问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下2023-08-08SpringBoot+WebSocket搭建简单的多人聊天系统
WebSocket是一种在单个TCP连接上进行全双工通信的协议。这是一种比较官方的说法,简单点来说就是,在一次TCP连接中,通信的双方可以相互通信。这篇文章主要介绍了SpringBoot+WebSocket搭建简单的多人聊天系统,需要的朋友可以参考下2019-10-10
最新评论