快速业务通道

Struts1.x系列教程(1):用MyEclipse开发第一个Struts程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
; </body> </html>

在IE中输入如下的URL:

http://localhost:8080/samples/%20mystruts/searchProduct.jsp

在“产品名称”文本框中输入产品名称的一部分,程序就会查询出所有包含输入的产品名称的产品信息,并将结果显示出来。

Struts1.x系列教程(1):用MyEclipse开发第一个Struts程序(10)

时间:2011-01-10 BlogJava 银河使者

七、解决ActionForm的乱码问题

到现在为止,程序的功能部分已经全部实现完了。但还存在一个问题。当我们在产品名称中输入中文时,虽然将客户端提交的数据成功保存到数据库中,但是在t_products表中的product_name字段显示的都是乱码。产生这个问题的原因只有一个,就是客户端提交的数据的编码格式和数据库的编码格式不一致造成的。当然,解决这个问题的方法有很多,但笔者认为最容易的就是使用过滤器。所谓过滤器,就是在客户端提交数据后,在交由服务端处理之前所执行的一段服务端代码(一般为Java代码)。一个过滤器是一个实现javax.servlet.Filter接口的类。在本例中要使用的过滤器类叫EncodingFilter,实现代码如下:

EncodingFilter.java

package filter;  import java.io.IOException;  import javax.servlet.*;  public class EncodingFilter implements Filter  {      public void destroy() {  }      public void doFilter(ServletRequest request, ServletResponse response,              FilterChain chain) throws IOException, ServletException      {          request.setCharacterEncoding("GBK");  // 将客户端提交的数据设为GBK编码格式          // 继续处理客户端提交的数据,如果不写这条语句,Servlet引擎将不会处理所过滤的页面          chain.doFilter(request, response);      }      public void init(FilterConfig filterConfig) throws ServletException {   }  }

Filter接口的doFilter方法是过滤器的核心方法。其中FilterChain类的doFilter方法允许继续处理客户端提交的数据。我们还可以使用这个方法来临时关闭Web站点的某个或全部的页面(根据过滤器的设置而定)。由于本书的数据库使用的是GBK编码格式,因此,需要使用ServletRequest的setCharacterEncoding方法将客户端提交的数据也设为GBK编码格式。

除了实现过滤器类,我们还需要在web.xml中的<web-app>节点加入如下的配置信息才能使过滤器生效:

在web.xml中配置过滤器

<filter>    <filter-name>EncodingFilter</filter-name>    <filter-class>      filter.EncodingFilter    </filter-class> </filter> <filter-mapping>    <filter-name>EncodingFilter</filter-name>    <url-pattern>/*</url-pattern> </filter-mapping>

在重新启动Tomcat后,重新输入一条带中文的产品信息,看看是否可以将中文保存在数据库中?

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号