关于页面之间传参时有空格,中文及点击页面后退按钮的问题

本文介绍了两种处理页面间传递带空格参数的方法:使用隐藏域和URL编码,并详细解释了如何在接收端正确处理这些参数,包括中文字符的编码转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天心情不错,解决了一些小bug,然后要进行下小总结了。。。。。


首先说这页面间传参,有时传的参数是带有空格的比如一小部分sql语句,怎么办呢?

两种解决方案:1.当进行form表单提交时,用隐藏术 2.当页面跳转时,即href .可用java方法:java.net.URLEncoder。

第一种方法是在页面中,加个隐藏域,如加上<input type="hidden" name="SearchCondition" id="SearchCondition" value="">

然后,在进行提交之前,用document.getElementById("SearchCondition").value="ss ss";或者

$("#SearchCondition").attr("value",“ss ss”);


第二种方法:

urlEncoded = java.net.URLEncoder.encode(szSearchCondition);

然后吧,<a href="XXX.jsp?page=<%=iPage+1%>&SearchConditionSelf=<%=urlEncoded%>"

就可以了。


再说接收端:

接收端对于上述两种情况,用普通的getParameter("")就可以了。。因为虽然第二种方法用了编码,但浏览器会自动帮我们解码的。。。

但接收端还要是分情况,主要针对有没有中文的情况:

如果没有中文,或者是有中文,但原form用的post方式提交,都可以直接用getParamter方式来接收。

巧的是,有中文,原form还必须要用get方式提交,这就得进行编码转换了,注意,我说的是编码转换,不是解码。


szSearchCondition = request.getParameter("SearchCondition");


if(szSearchCondition != null){
try{
szSearchCondition = new String(szSearchCondition.getBytes("iso-8859-1"),"gb2312");
}catch(Exception e){
e.printStackTrace();
}
}

原因很简单,在浏览器上传值用的都是latin1即iso-8859-1来传的。


Over了吧。。。但你可能会问我什么一定要用get,原因是这样:

当用post时,发现页面跳转之后,再点击浏览器的后退按钮,会出现已过期的不和谐情况。。。而用get呢,就ok了。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值