SpringMVC如何用Post方式重定向
作者:贺总的好兄弟 发布时间:2021-10-05 21:34:27
标签: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>
运行页面:
结果
请求转发的方式:
重定向的方式:
来源:https://blog.csdn.net/CosecantY/article/details/122912059


猜你喜欢
- 本文主要介绍我为桌面和 Web 设计的一个超级秘密 Flutter 项目使用了画布和可拖动节点界面。本教程将展示我如何使用堆栈来使用小部件完
- 一、DataTable转XML#region DataTableToXml /// &
- 一、Maven聚合开发_继承关系 Maven中
- 本文实例讲述了Java文件上传与文件下载实现方法。分享给大家供大家参考,具体如下:Java文件上传数据上传是客户端向服务器端上传数据,客户端
- 介绍建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种
- 概述这里是Mac环境,如果是window环境的同学,在环境搭建和工具上可以选择Window环境的。先看看需要到的工具;1、apktool:h
- 本文实例讲述了C++实现的O(n)复杂度内查找第K大数算法。分享给大家供大家参考,具体如下:题目:是在一组数组(数组元素为整数,可正可负可为
- 看书的时候被一段代码能凌乱啦,代码是这样的:package 继承;abstract class People {
- MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱
- java io操作中通常采用BufferedReader,BufferedInputStream等带缓冲的IO类处理大文件,不过java n
- 我们知道:int i = 5;long j = 7;i = i + j不能编译,但i += j却能编译运行,结果i = 12。这是因为:i
- 本文实例讲述了Java简单工厂模式定义与用法。分享给大家供大家参考,具体如下:一 代码// 抽象产品(Abstract Product)角色
- Spring 配置文件报错:元素 "context:component-scan" 的前缀 "context&
- 本文实例为大家分享了Spring MVC接口防数据篡改和重复提交的具体代码,供大家参考,具体内容如下一、自定义一个注解,此注解可以使用在方法
- 介绍今天我们将研究java中的Builder模式。Builder 设计模式是一种创造性的设计模式,如工厂模式和抽象工厂模式。当Object包
- 众所周知,在墙内开发很头疼的一件事就是Maven仓库的连接速度太慢。虽然对于很多互联网企业和大中型软件公司,建个镜像是分分钟的事。但对于个人
- @requestBody的作用及说明1、@requestBody注解常用来处理content-type不是默认的application/x-
- 一、HashMap概述HashMap基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键
- 目录操作创建目录File类中有两个方法可以用来创建文件夹:mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败
- 目录@Configuration + @Bean@Componet + @ComponentScan@Import注解导入@Import直接