`

Struts中文乱码问题

阅读更多
经Struts处理的.do请求都会有中文乱码的问题

1.写过滤器MyFilter

package com.zhao.struts;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

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.HttpServletRequest;

public class MyFilter implements Filter {

private FilterConfig config;
private String charset;
private boolean isEncode;

public void destroy() {
// TODO Auto-generated method stub
config = null;
charset = null;
isEncode = false;

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
try {
((HttpServletRequest) request).setCharacterEncoding(charset);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
try {
chain.doFilter(request, response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
this.config = config;
charset = config.getInitParameter("char");
if (config.getInitParameter("encode").equalsIgnoreCase("true")) {
isEncode = true;
}

}

}

2. 配置web.xml   //不是Struts框器也可配置过滤器的,是jsp+servlet也可以

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
 
  <filter>                  <!--过滤器配置-->
<filter-name>myFilter</filter-name>
<filter-class>com.zhao.struts.MyFilter</filter-class>
<init-param>
  <param-name>char</param-name>
  <param-value>utf-8</param-value>
</init-param>
<init-param>
    <param-name>encode</param-name>
    <param-value>true</param-value>
   </init-param>
  </filter>
  <filter-mapping>
   <filter-name>myFilter</filter-name>
   <url-pattern>*.do</url-pattern>
  </filter-mapping>

</web-app>

3.重新装载项目,动了web.xml文件的都要重新装载才能更新
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics