url转义字符
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
用url转义字符,帮我解决了批量打印的问题.
我的原路径是:
var url = "/EIIMSWeb/ReportServer?reportlet=/com/doc/rpt_PartHouseScale_Cover.cpt&reportlet_1=/com/doc/rpt_PartHouseScale_TrustDeed.cpt&reportlet_2=/com/doc/rpt_Scale_Parthouse.cpt&reportlet_3=/com/doc/rpt_PartHouseScale_Fruit_Show.cpt&reportlet_4=/com/doc/rpt_PartHouseScale_Public_Area.cpt";
window.open("/EIIMSWeb/co_BBase/frmPdfBatchPrint.jsp?url=" + url + "&bseq=" + "20081003663")时,在frmPdfBatchPrint.jsp中alert(url)时,只获取到了"/EIIMSWeb/ReportServer?reportlet=/com/doc/rpt_PartHouseScale_Cover.cpt&bseq=20081003663",那是因为把url作为参数向frmPdfBatchPrint.jsp传递时,默认的将路径中的reportlet_1,reportlet_2........也作为了参数,但是在frmPdfBatchPrint.jsp中没有对reportlet_1,reportlet_2........进行参数定义,我也不能那样去定义,所以只能把url作为一个整体发送到frmPdfBatchPrint.jsp中,才能实现功能,我把url中的&用%26替换就可以了.
也许兄弟们遇到这个问题,但我还是要写下来.
在这里也要谢谢我朋友沈岩的帮忙.