1、从jsp中上传中文参数到action,解决乱码问题方法
response.setHeader("refresh","0;URL=/demo/VmListByClassNameAction.action?&className=" +
java.net.URLEncoder.encode(className,"utf-8"));
这句代码中,参数className是中文参数,当不encode时,在action中获取该参数是乱码,所以当要传递中文参数时,先在jsp代码中调用
java.net.URLEncoder.encode(className,"utf-8"));或者在你的jsp中使用js传递参数到action。
JSP的JS中:中文参数用encodeURI(encodeURI(中文参数)),需要过两次转码:
function show(next,id,realName){
document.forms['f2'].action="usersearchNextPage?next="+next+"&id="+id+"&realName="+encodeURI(encodeURI(realName));
document.forms['f2'].submit();
}
document.forms['f2'].action="usersearchNextPage?next="+next+"&id="+id+"&realName="+encodeURI(encodeURI(realName));
document.forms['f2'].submit();
}
然后在action的java代码中调用:
String declassName = java.net.URLDecoder.decode(className,"UTF-8");
进行解码。
2、从jsp传递带有中文的参数到另一个jsp中(第一个jsp中提交数据到另一jsp中,在第2个jsp中需要访问该提交数据)
首写这两个jsp中,都需在<%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*" errorPage="" %>中设置contentType属性值为“charset=gb2312”;
再者,在获取提交后的中文参数之前,需要先调用request.setCharacterEncoding("GBK");然后通过request.getParameter("checkCode");(其中checkCode是第一个jsp中元素的id名)。
3、
struts2中action的type为redirect跳转时中文传参乱码问题
解决方法一:
struts.xml
<action name="aaction" class="com.soft.web.AAction.class"><result name="afterOnView">/pages/aa/aa_view.jsp</result>
<result name="afterOnSave" type="redirect">
<param name="location">/aaction!onView.action?am.name=${am.name}</param>
<param name="encode">true</param> </result>
</action>
解决方法二:
不管是传递什么参数,自己都是写个小方法先加密然后作为参数,然后再接受端转化就行了。
比如统一转化成base64。