最近使用session跨页面传值,可是当我这样用的时候session.setAttribute("nickname",nkname),注:nkname是汉字。然后跳转到另外一个页面取它出来的时候,就是session.getAttribute("nkname").toString(),它就会乱码成为一个个???。试过了csdn里面好多办法都不行的情况下,用了这样一个方法:Strng getFromSession=new String((String)session.getAttribute( "sessionName ").getBytes( "GBK "), "ISO-8859-1 "); 所以我怀疑,session中的编码方式是不是ISO-8859-1?还是其他的? 还请各位朋友不吝赐教哦,恕我愚钝哈........
package com.filter;import java.io.IOException;import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class Filter implements javax.servlet.Filter { public void destroy() {
// TODO Auto-generated method stub
} public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest newRequest=(HttpServletRequest)request;
String pathString=newRequest.getRequestURI(); //获取路径
if (pathString.lastIndexOf(".")>0) {
String path=pathString.substring(pathString.lastIndexOf("."),pathString.length());
if (path.equals(".css")||path.equals(".js")) { //判断是否是js或css文件
chain.doFilter(request, response);
}
else {
request.setCharacterEncoding("gbk");
response.setCharacterEncoding("gbk");
chain.doFilter(request, response);
}
}
else {
request.setCharacterEncoding("gbk");
response.setCharacterEncoding("gbk");
chain.doFilter(request, response);
}
} public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}}
配置webxml.txt
<filter>
<filter-name>filter</filter-name>
<filter-class>com.filter.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
server.xml文件
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
注意红色字体部分,编码根据你自己情况更改一下,比如GBK....
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
你用的那个Strng getFromSession=new String((String)session.getAttribute( "sessionName ").getBytes( "GBK "), "ISO-8859-1 "); 方法的原理是在网页转发时,session会把你原来页面的格式转化成字节码,你这个方法是把你转化成字节码格式的字符再从新编译成ISO的形式显示