springmvc 重定向

本贴最后更新于 2675 天前,其中的信息可能已经渤澥桑田

各位基佬们,有谁做过 springmvc post 请求重定向的问题,即 post-redirect-post,将参数由第一个 post 请求传递给第二个 post 请求

  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    942 引用 • 1458 回帖 • 117 关注
  • post
    3 引用 • 29 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Angonger

    没有但是我想沙发

  • meikaiyipian

    redirect 可以携带参数吗?除了那种地址后带的

    1 回复
  • wugy

    可以的,使用 RedirectAttributes

    1 回复
  • meikaiyipian

    没用过这么高级的

  • wugy

    😄 呼叫大婶 @88250

    1 回复
  • 88250

    没用过..

    1 回复
  • wugy

    秒回呀,批量执行的操作,前端传的数据较多,需要根据不同的类型重定向到对应的业务类型 controller,有没有好的解决思路?

    1 回复
  • 88250

    为什么要重定向,不搞一下内部路由呢

    1 回复
  • wugy

    每种业务类型都有对应的 controller,不重定向的话,需要注入每种类型的 controller,内部路由是什么?麻烦说详细的,谢谢!

    1 回复
  • 88250

    哦,我明白了。前面说的内部路由你就当我没说吧,我原意是想让你搞一下分发不同服务进行处理。
    要客户端重定向的话 302 理论上是会带请求参数的嘛。

    1 回复
  • wugy

    我说的是在服务端重定向,客户端只提供一个 url,服务端接收到这个请求后再根据不同的业务类型重定向到对应的 url 处理。

    1 回复
  • 88250

    加油,我是帮不上什么了,哈哈

    1 回复
  • wugy

    😢

  • smart

    forward 不行么?

    1 回复
  • wugy

    没试过。。。

    1 回复
  • smart

    直接 forward 应该就可以,forward 应该是保留了原来的请求方式以及参数。redirect 是重定向,参数都会丢失的,除非你手动塞进去

    1 回复
  • wugy

    试了好像不行,forward 是不是 url 直接是 jsp 页面的地址?

    1 回复
  • smart

    我试了下可以,我用 springboot

    @PostMapping("/login_test")
    	public String test () {
    		log.info("enter...");
    		return "forward:/login_do";
    	}
    	
    	@PostMapping("/login_do")
    	@ResponseBody
    	public JSONObject login_check (String userName, String syspwd, String userpwd, String token) {
    		JSONObject rsJson = new JSONObject();
    		log.info("登录校验:user:{}, syspwd:{}, userpassd:{}, token:{}", userName, syspwd, userpwd, token);
    		ResultState rs = sysService.login(userName, syspwd, userpwd);
    		HttpSession session = this.getSession();
    		if (rs.isState()) {
    			session.setAttribute(Const.SESSION_USER, new User(userName, userpwd));
    			rsJson.put("status", "ok");
    			log.info("user:{}登录成功!", userName);
    		} else {
    			rsJson.put("status", "fail");
    			rsJson.put("errCode", rs.getErrCode());
    			log.warn("登录失败");
    		}
    		return rsJson;
    	}
    	```
    
    1 回复
  • wugy

    39202a306b554670ad98dbad568ecd31.png

    我是这么用的(ps:eclipse 中代码不能直接拷贝出来)

    1 回复
  • smart

    可以吗?你这是又把 springmvc 用回了 servlet 啊 😂

    1 回复
  • wugy

    我处理的是批量操作,多种业务类型,前端统一请求一个 url,后端接收到请求后根据不同的业务类型请求对应的 url

    1 回复
  • smart

    这样写岂不更优雅一些?springboot web 和 springmvc 其实是一样的,springboot 只是对 spring 集成的整合。

        @PostMapping("/login_test")
    	public String test () {
    		log.info("enter...");
    		StringBuilder sbd = new StringBuilder("forward:");
    		sbd.append("/login_check?param0=")
    		   .append("abcd");
    		return sbd.toString();
    	}
    	
    	@PostMapping("/login_check")
    	public ModelAndView login_check (String userName, String syspwd, 
    			String userpwd, String token, String param0) {
    		log.info("登录校验:user:{}, syspwd:{}, userpassd:{}, token:{}, param0:{}", 
    				userName, syspwd, userpwd, token, param0);
    		ModelAndView mv = this.getModelAndView();
    		mv.setViewName("index");
    		return mv;
    	}
    	```
    
    1 回复
  • wugy

    b2971b1143fb44e99398e870fbfd46a8.png

    按你说的,我这么写你认为可以吗?(ps:我的 eclipse 中代码如何直接粘贴到回复中呀?)

    1 回复
  • smart 2

    转发就不要 ```
    @ResponseBody

    代码粘贴查看[MarkDown教程](https://hacpai.com/guide/markdown)
    @88250 @Vanessa 看我又帮你们推广了 :smile: 
    
    2 回复
  • wugy

    💯 好的,我试下,感谢!!!

  • 就需要你这样的老司机来带一带

请输入回帖内容 ...

推荐标签 标签

  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 689 关注
  • abitmean

    有点意思就行了

    29 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    180 引用 • 400 回帖
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 261 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 51 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    35 引用 • 35 回帖 • 4 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    122 引用 • 73 回帖 • 1 关注
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    123 引用 • 168 回帖
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    25 引用 • 83 回帖
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 53 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 632 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 155 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    69 引用 • 190 回帖 • 483 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖 • 1 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 15 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 60 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖 • 1 关注
  • HBase

    HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。

    17 引用 • 6 回帖 • 58 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 10 关注
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 10 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    16 引用 • 7 回帖 • 1 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    90 引用 • 383 回帖 • 1 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    103 引用 • 126 回帖 • 442 关注