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>

运行页面:

结果

请求转发的方式:

重定向的方式:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 定时任务注解@Scheduled不生效问题及解决

    定时任务注解@Scheduled不生效问题及解决

    这篇文章主要介绍了定时任务注解@Scheduled不生效问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • SpringBoot整合Redis实现缓存分页数据查询功能

    SpringBoot整合Redis实现缓存分页数据查询功能

    类似淘宝首页,这些商品是从数据库中查出来的吗,答案肯定不是,本文我们就通过一个案例实操一下,首页热点数据怎么放到Redis中去查询,感兴趣的同学可以参考一下
    2023-06-06
  • 使用javafx更新UI的方法

    使用javafx更新UI的方法

    这篇文章主要介绍了使用javafx更新UI的方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • spring boot加载第三方jar包的配置文件的方法

    spring boot加载第三方jar包的配置文件的方法

    本篇文章主要介绍了spring boot加载第三方jar包的配置文件的方法,详细的介绍了spring boot jar包配置文件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • MyBatis数组与集合判断空问题

    MyBatis数组与集合判断空问题

    这篇文章主要介绍了MyBatis数组与集合判断空问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 解决调用ftpClient.retrieveFileStream(String remoteFilePath)第二次读取为空问题

    解决调用ftpClient.retrieveFileStream(String remoteFilePath)第二次读

    这篇文章主要给大家介绍了关于如何解决调用ftpClient.retrieveFileStream(String remoteFilePath)第二次读取为空问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • 纯注解版spring与mybatis的整合过程

    纯注解版spring与mybatis的整合过程

    这篇文章主要介绍了纯注解版spring与mybatis的整合过程,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • springcloud-feign调用报错问题

    springcloud-feign调用报错问题

    这篇文章主要介绍了springcloud-feign调用报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • SpringBoot+WebSocket搭建简单的多人聊天系统

    SpringBoot+WebSocket搭建简单的多人聊天系统

    WebSocket是一种在单个TCP连接上进行全双工通信的协议。这是一种比较官方的说法,简单点来说就是,在一次TCP连接中,通信的双方可以相互通信。这篇文章主要介绍了SpringBoot+WebSocket搭建简单的多人聊天系统,需要的朋友可以参考下
    2019-10-10
  • 深入了解java.util.Arrays的使用技巧

    深入了解java.util.Arrays的使用技巧

    在这篇文章中,我们将来带大家看看 java.util.Arrays ,我们可以使用 Arrays 创建,比较,排序,搜索,stream 和转化数组,感兴趣的小伙伴可以了解一下
    2023-02-02

最新评论