现在的位置: 首页 > 综合 > 正文

JSP页面之间传递参数时乱码的解决

2013年10月16日 ⁄ 综合 ⁄ 共 1852字 ⁄ 字号 评论关闭

(1):用过滤器

新建一个类ChineseFilter

//生成自己的过滤器

 

package org.perfect.struts.filters;

 

import java.io.IOException;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

public class ChineseFilter extends HttpServlet implements Filter {

 

private FilterConfig filterConfig;

 

public void init(FilterConfig filterConfig) throws ServletException {

this.filterConfig = filterConfig;

}

 

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain filterChain) {

try {

 

String encoding=filterConfig.getInitParameter("encoding");//WEB.xml配置文件中取出参数,这样我们可以通过配置修改编码格式.

request.setCharacterEncoding(encoding);//设置请求的编码格式

System.out.println(encoding);

filterChain.doFilter(request, response);//关键

} catch (ServletException sx) {

filterConfig.getServletContext().log(sx.getMessage());

} catch (IOException iox) {

filterConfig.getServletContext().log(iox.getMessage());

}

}

 

 

public void destroy() {

}

 

protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {

super.doGet(arg0, arg1);

}

 

protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {

super.doPost(arg0, arg1);

}

}

编译后把.class文件放到项目的web-infclasses

然后在修改web.xml

加上

 

<filter>

<filter-name>ChineseFilter</filter-name>

<filter-class>org.perfect.struts.filters.ChineseFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>GBK</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>ChineseFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

重启服务器,应该可以了

第二种方式是:

把获取来的参数重新编码

String username = new String(request.getParameter("username").getBytes("iso-8859-1"),"GBK");

这样也可以了

 

 

抱歉!评论已关闭.