实例说明url转义需求
在需要重定向的url中如果有参数,那么可能会出现问题
比如:
abc.action?reurl=cde.action?p1=a&p2=2&p3=3
我在下一个action接受reurl参数值时,得到的是cde.action?p1=a,后面的都没了,这个是因为url需要转义
abc.action?reurl=cde.action%3Fp1=a%26p2=2%26p3=3
下面转载文章:
url转义字符原理
如果表单的action为list.jsf?act=go&state=5
则提交时通过request.getParameter可以分别取得act和state的值。
如果你的本意是act='go&state=5'这个字符串,那么为了在服务端拿到act的准确值,你必须对&进行转义
[预备知识]
对与通过get方式提交的url,浏览器在提交前首先根据http协议把一一个的参数及其值解析配对。而url的参数间是通过&分割的,这就是浏览器进行参数配置的分割依据。如果你的参数值中含有&等url特殊字符,那么你在服务器端就会拿到意想不到的值。所以必须对url的特殊字符进行转义。
编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。
下表中列出了一些URL特殊符号及编码
十六进制值
1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字符 %25
6. # 表示书签 %23
7. & URL 中指定的参数间的分隔符 %26
8. = URL 中指定参数的值 %3D
所以上述的action你应该写成list.jsf?act=go%26state=5
引用 :http://alipay.iteye.com/blog/68412