进入一个页面处理完后还要返回到进入的页面,常见场景是 1)登陆重定向 2)从不同的入口进入公共页面,处理完成后返回到进入的页面。
下面链接会进入到公共上传页面,完成后返回activity/moke/toStep?activityId=234&tempStepId=33&index=2
<a
class="blue">提交教案</a>
在上传页面内通过hidden记录要返回的页面
<input type="hidden" name="redirectParam" value="${redirectParam }" />
上传页面提交后直接重定向到redirectParam即可。
.....
return "redirect:/"+redirectParam;
存在的问题是:在后台request中获得redirectParam参数只能获取部分参数,后面的tempStepId=33&index=2参数丢失了。这样导致上传页面内hidden redirectParam中只有部分参数,这样重定向后的页面参数就不对了。<input type="hidden" name="redirectParam" value="。。。activityId=234" />
&tempStepId=32&index=1这两项丢失了
解决办法:将redirectParam的全部值编码,变成如下形式
redirectParam=。。。activityId%3D234%26tempStepId%3D32%26index%3D1
这样后台就将这个值当做一个整体来处理,生成上传页面内的hidden redirectParam中包含全部的参数,示例如下<input type="hidden" name="redirectParam" value="。。。activityId=234&tempStepId=32&index=1" />
input中的内容也会当做一个整体来处理,这样获取redirectParam的值后重定向就正确了。
在freemarker中使用自定义函数来编码
<#assign urlEncode="cn.com.teacher.cistus.dt.common.freemarker.url.UrlEncode"?new()>
<a href="。。。。&actStepId=${step2.id}&redirectParam=${urlEncode(redirectParam)}"
import jodd.servlet.URLCoder;
public class UrlEncode implements TemplateMethodModel{
@Override
public Object exec(List arguments) throws TemplateModelException {
String rulParam=(String) arguments.get(0);
return URLCoder.encodeQuery(rulParam);
}
}
总结:url中的&符号会被当做参数分割符,将&转码后就不是参数分割符了,而input中的&按普通字符来处理,并且转码后的&输出到页面时会自动变回成&。
也可以通过标准的js方法encodeURIComponent来将url中多个参数编码
http://cas.teacher.com.cn/logincheck?sub=1&f="+encodeURIComponent('a=1&b=2&c=3')
这样后台获取到f的值是a=1&b=2&c=3
相关推荐
Java URL转换工具是一种用于解析和处理URL的程序,它能够帮助开发者获取URL背后的真实地址,尤其是在面对重定向、参数编码等情况时。在Web开发中,URL(Uniform Resource Locator)是互联网资源的统一地址,它包含了...
实现动态加载二级域名通常需要服务器端的支持,例如使用DNS(域名系统)动态解析或配置,以及编程语言中的路由规则设定。在.NET环境中,可以通过IIS的URL重写规则或自定义中间件来实现;在Node.js中,可以使用...
JavaScript重定向URL参数是网页开发中常见的操作,主要用于在页面跳转时传递数据。本文将详细介绍两种使用JavaScript实现URL重定向并携带参数的方法。 一、字符拼接形式 这种方法是通过解析当前URL,检查参数是否...
在这个“springmvc 第二个例子”中,我们将探讨如何通过Spring MVC接收表单参数并执行重定向。 首先,让我们理解接收表单参数的过程。在Web应用中,用户通常通过HTML表单提交数据。Spring MVC提供了一个强大的机制...
### Apache Rewrite Module 重定向问题解析 #### 一、Apache Rewrite Module 概述 Apache的Rewrite Module(重写模块)是Apache服务器中一个非常强大的工具,主要用于URL重写及重定向功能。它通过一系列规则对请求...
- **重定向URL长度限制**:浏览器和服务器对URL长度都有一定的限制。过长的URL不仅可能导致客户端无法正确解析,也会增加服务器处理的负担。 - **服务器资源消耗**:每处理一次重定向请求,都需要分配内存来存储URL...
4. **迁移和重定向**:URL重写使得更改网站结构时可以轻松地重定向旧链接到新位置,避免断链问题。 四、高级用法 除了基本的URL重写,ASP.NET还支持更多的高级功能,如参数传递、正则表达式匹配等。例如,我们可以...
**Python-基于Python的缩址PyURLShortener:Flask应用中的URL短链与重定向** 在Web开发中,有时我们需要将长的URL缩短,以便更方便地分享或存储。`PyURLShortener`就是这样一款Python库,它为Flask应用提供URL缩址...
在介绍具体配置方法之前,我们先来了解一下Nginx的转发机制以及URL参数的含义。 首先,了解Nginx的基础转发机制是非常必要的。Nginx通过配置文件中的location指令来定义不同的请求匹配规则,并且可以对这些规则应用...
一个健壮的URL解析器能够帮助开发者轻松地提取URL中的各个组成部分,如协议、主机名、端口、路径、查询参数等,从而实现更高级的功能,如重定向、构建动态链接或处理API请求。本文将深入探讨一个名为`Poly9.URL...
在实际应用中,获取URL参数通常是为了实现动态加载数据、页面重定向、用户个性化设置等功能。例如,你可以根据参数来决定加载哪个页面段,或者将参数作为API调用的数据源。确保正确、安全地处理URL参数是开发高效Web...
Springboot 转发重定向实现方式解析 Springboot 转发重定向是指在 Springboot 框架中,如何实现请求的转发和重定向。下面将详细介绍 Springboot 转发重定向的实现方式。 一、Springboot 转发 在 Springboot 中,...
例如,给出的PHP源码中包含了一个名为`getrealurl`的函数,该函数通过发送HTTP头请求获取经过301或302重定向后的实际URL。用户可以通过输入`link?url=`形式的链接,然后程序会返回解密后的实际URL。 总的来说,百度...
在SpringMVC框架中,视图解析和重定向视图是关键组成部分,它们负责将处理结果展示给用户。此外,语言国际化的支持使得应用程序能够适应全球不同地区的用户需求。接下来,我们将深入探讨这三个主题。 首先,...
这通常由URL重写引擎完成,引擎会解析请求URL,根据预设的规则进行替换或者重定向,从而实现URL的变换。 二、URL重写的目的 1. **SEO优化**:搜索引擎更容易理解并索引清晰、有意义的URL,有助于提高网站排名。 2....
1. **配置解析**:模块需要在配置文件中声明并接收参数,如目标服务器地址、路径映射规则等。这通常涉及到解析`nginx.conf`中的指令,并将它们存储在结构体中供后续使用。 2. **重写阶段**:在Nginx的请求处理流程...
IIS 7中实现HTTP到HTTPS的重定向知识点详细解析: 在互联网安全日益重要的今天,使用HTTPS协议来保证网站数据传输的安全性已经变得尤为重要。HTTPS协议相比HTTP协议,通过SSL/TLS加密了客户端与服务器之间的通信,...
在Java Web开发中,它经常与Apache Tomcat服务器配合使用,通过配置规则来实现动态URL到静态URL的映射,以及对URL进行各种操作,如添加、修改或删除请求参数。以下是对`URLRewrite`的详细解释和使用实例: 一、URL...
在HttpClient中,我们可以通过`HttpPost`类创建一个POST请求对象,然后设置请求的URL和参数。 1. 创建`HttpPost`对象:`HttpPost httpPost = new HttpPost("http://example.com/api");` 2. 添加普通参数:使用`...