您的位置:首页 > 其它

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

2011-12-09 17:03 363 查看
今天心情不错,解决了一些小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了。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: