快速业务通道

Struts从零开始二、解决中文乱码的问题实例 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
ds RequestProcessor { public boolean processPreprocess(HttpServletRequest servletRequest, HttpServletResponse serveltResponse) { try { servletRequest.setCharacterEncoding("GBK"); System.out.println("请求被处理."); } catch (UnsupportedEncodingException ex) { ex.printStackTrace(); } return true; } }

(3) 修改配置文件sturts-config.xml,在其中加入一个名为的元素,用以指定我们定制的RequestProcessor类。

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> <struts-config> <form-beans> <form-bean name="loginActionForm" type="formbeans.LoginActionForm" /> </form-beans> <action-mappings> <action path="/login" name="loginActionForm" scope="request" type="actions.LoginAction"> <forward name="success" path="/success.jsp"/> <forward name="error" path="/wrong.jsp"/> </action> </action-mappings> <controller processorClass="servlets.EncodingHandler" /> </struts-config>

上面就是我们自己的定义的RequestProcessor类,使用标签类定义。

如图:

小结:这样做呢?问题是解决了,每一个请求先经过这个方法,并转换了字符集再交给action做处理,这样我们不用在操心中文乱码,但RequestProcessor是与struts耦合在一块儿。如果不用struts框架,我们又该如何处理中文问题呢?是否又更好的办法呢?那就接着跟我往下看吧。

Struts从零开始二、解决中文乱码的问题实例(4)

时间:2011-08-05

C、Filter来解决中文问题

Filter,是不是你脑子里闪现了这个词呢?下面就来看看如何用它来改写我们上一章节的例子吧!

(1) 首先在工程中新建一包,命名为filter,在下面新建一类文件,命名为EncodingServlet,并继承HttpServlet、实现Filter接口,注意并实现接口的方法。

在Servlet中filter起着过滤器的作用,当一个请求发送到服务器的时候,需要把请求首先交给filter来处理,然后交给action做处理。EncodingServlet负责处理请求的字符集,在此就起这么个功能,具体代码请依照如下所示:

package servlets; 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; public class EncodingServlet extends HttpServlet implements Filter { private static final long serialVersionUID = 1L; public void doFilter(ServletRequest servletRequest, ServletResponse serveltResponse, FilterChain filterChain) { try { servletRequest.setCharacterEncoding("GBK"); filterChain.doFilter(servletRequest, serveltResponse); } catch (Exception ex) { } } public void init(FilterConfig arg0) throws ServletException { } }

(2) 修改web.xml,加入我们的filter。

EncodingServlet servlets.EncodingServlet EncodingServlet /*

小结:这个中文乱码处理用了fileter,而且适用与任何场合,比较实用。

怎么样,通过三个处

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号