读书人

jsp servlet乱码解决小结

发布时间: 2012-08-31 12:55:03 作者: rapoo

jsp servlet乱码解决总结
演示情况:
1.index.jsp 向 result.jsp post 参数

出现乱码

解决:(假定两页面均是utf-8编码)
方法1.在result.jsp页面内加入

request.setCharacterEncoding("utf-8");  


方法2.加filter

  <filter><filter-name>EncodingFilter</filter-name><filter-class>leko.macleo.filter.EncodingFilter</filter-class><init-param>                                                                 <param-name>languageconfig</param-name>   <param-value>utf-8</param-value>   </init-param>  </filter><filter-mapping><filter-name>EncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>


package leko.macleo.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;import javax.servlet.Filter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class EncodingFilter implements Filter {private FilterConfig filterConfig;  private String enconfig;  /** * Constructor of the object. */public EncodingFilter() {super();}// Handle the passed-in FilterConfigpublic void init(FilterConfig filterConfig) throws ServletException {this.filterConfig = filterConfig;//获得,web.xml文件中配置languageconfig 的值,我在web.xml文件中配置了languageconfig 的值为:utf-8;  this.enconfig=this.filterConfig.getInitParameter("languageconfig");  System.out.println("过滤器初始化成功!");  }public void doFilter(ServletRequest req, ServletResponse res,FilterChain filterChain){try {HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) res;HttpSession session = request.getSession();if (this.enconfig!=null) {     request.setCharacterEncoding(this.enconfig);     response.setCharacterEncoding(this.enconfig);     System.out.println("过滤器处理中:"+this.enconfig);    }    //处理权交给下一个过滤器;  // 这里放到达目的地前(进入)处理代码filterChain.doFilter(req, res);// 这里放到达目的地(离开)的处理代码} catch (IOException e) {e.printStackTrace();} catch (ServletException e) {e.printStackTrace();}}/** * Destruction of the servlet. <br> */public void destroy() {// Just puts "destroy" string in log// Put your code herethis.filterConfig=null;    this.enconfig=null;    System.out.println("过滤器销毁成功!");  //System.out.println("过滤器销毁成功!");  }}



相比两方法,方法2虽然麻烦..但是相对方便..



Servlet 字符乱码解决
http://blog.csdn.net/songylwq/article/details/5771893
http://blog.csdn.net/cn_gaowei/article/details/6673539
http://www.cnitblog.com/jmbkeyes/articles/21479.html
用filter标本兼治了。。。

读书人网 >JavaScript

热点推荐