SSH乱码3种解决方案

来源:互联网 发布:怎么样激活windows 编辑:程序博客网 时间:2024/05/09 00:44

SSH中常用的乱码解决方案
1.继承ActionServlet类
public class MyActionServlet extends ActionServlet {

 @Override
 protected void process(HttpServletRequest request,
   HttpServletResponse response) throws IOException, ServletException {
  request.setCharacterEncoding("gbk");
  response.setCharacterEncoding("gbk");
  super.process(request, response);
 }

}
web.xml中配置
<servlet-class>com.sugang.web.MyActionServlet</servlet-class>
2.过滤器
实现javax.servlet.Filter接口
如下:
public class EncodingFilter implements Filter {

 public void destroy() {
  // TODO Auto-generated method stub

 }

 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  request.setCharacterEncoding("gbk");
  response.setCharacterEncoding("gbk");
  chain.doFilter(request, response);
 }

 public void init(FilterConfig arg0) throws ServletException {
  // TODO Auto-generated method stub

 }

}
web.xml中配置
<!-- EncodingFilter -->
 <filter>
  <filter-name>EncodingFilter</filter-name>
  <filter-class>com.sugang.web.EncodingFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>EncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
3.struts中配置controller
新建类:
import org.apache.struts.action.RequestProcessor
public class EncodingController extends RequestProcessor {

 @Override
 public void process(HttpServletRequest request, HttpServletResponse response)
   throws IOException, ServletException {
  request.setCharacterEncoding("gbk");
  response.setCharacterEncoding("gbk");
  super.process(request, response);
 }

}
在struts_config.xml中加入
<controller processorClass="包名.类名" />
(此种方法有局限,因为struts配置文件中只能有一个<controller/>配置)