总结JSP,Struts等应用程序中在Tomcat中的乱码问题

    技术2022-05-11  72

    一般表单提交有POST,GET方式,不过处理的时候方法有所区别一般post可以在JSP页面添加<% request.setCharacterEncoding="GBK";%> 来处理GET方式可以用转换编码方式类似的如:<%String username = new String(username.getBytes("ISO8859_1"),"GBK");%>不过这不是很好的处理方式,比较麻烦。每个页面都要写这样重复的转换。POST方式一般可以用Filter过滤的Servlet来实现创建EncodingFilter.java=======================/* * CoppyRight (c) Eays Studio * description:LoginAction */package net.eays.servlet;

    import java.io.IOException;import java.io.PrintWriter;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.ServletException;/**  * @author 小林信仁 * Creation date: 05-09-2007 */public class EncodingFilter implements Filter {

     /**  * Constructor of the object.  */ private FilterConfig config = null; private String targetEncoding = "GBK";  public EncodingFilter() {  super(); }

     /**  * Destruction of the servlet. <br>  */ public void destroy() {  config = null;  targetEncoding = null; }

     /**  * Initialization of the servlet. <br>  *  * @throws ServletException if an error occure  */ public void init(FilterConfig config) throws ServletException {  this.config = config;  this.targetEncoding = config.getInitParameter("encoding");  System.out.println("init get value:"+ this.targetEncoding ); }  public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain) throws IOException,ServletException{  System.out.println("targetEncoding :" + targetEncoding + "/n");  request.setCharacterEncoding(targetEncoding);  chain.doFilter(request, response); }

    }

    ==============================Web.xml中EncodingFilter过滤器配置添加========================<filter>  <description>EncodingFilter</description>  <display-name>EncodingFilter</display-name>  <filter-name>EncodingFilter</filter-name>  <filter-class>net.eays.servlet.EncodingFilter</filter-class>  <init-param>   <description>encoding to GB2312</description>   <param-name>encoding</param-name>   <param-value>GB2312</param-value>  </init-param> </filter> <filter-mapping>  <filter-name>EncodingFilter</filter-name>  <url-pattern>/*</url-pattern> </filter-mapping>=============================处理Get方式以上还是不行,Tomcat可以修改server.xml文件============================知道 <Connector最后添加属性 useBodyEncodingForURI="true"============================OK,一切的乱码问题通通解决! 


    最新回复(0)