`
啸笑天
  • 浏览: 3465863 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

tomcat中的一个过滤器例子

阅读更多

感谢:http://www.iteye.com/wiki/Struts/578-Struts原理与实践(5) 和Google

将所有的request的字符集也设置为UTF-8。虽然,我们可以在每个文件中加入这样的句子:request.setCharacterEncoding("UTF-8");来解决,但这样显得很麻烦。一种更简单的解决方法是使用filter。具体步骤如下: 

在mystruts\WEB-INF\classes目录下再新建一个名为filters的目录,新建一个名为:SetCharacterEncodingFilter的类,并保存在该目录下。其实,这个类并不要您亲自来写,可以借用tomcat中的例子。现将该例子的程序节选如下: 

  1. package filters;   
  2. import java.io.IOException;   
  3. import javax.servlet.Filter;   
  4. import javax.servlet.FilterChain;   
  5. import javax.servlet.FilterConfig;   
  6. import javax.servlet.ServletException;   
  7. import javax.servlet.ServletRequest;   
  8. import javax.servlet.ServletResponse;   
  9. import javax.servlet.UnavailableException;   
  10.  
  11. public class SetCharacterEncodingFilter implements Filter {   
  12.   
  13.   
  14.  //可以理解为默认编码,在web.xml中配置后读取存入
  15.     protected String encoding = null;   
  16.   

  17.     protected FilterConfig filterConfig = null;   

  18.     protected boolean ignore = true;   
  19.   
  20.     public void destroy() {   
  21.   
  22.         this.encoding = null;   
  23.         this.filterConfig = null;   
  24.   
  25.     }   
  26.   
  27.   
  28.     public void doFilter(ServletRequest request, ServletResponse response,   
  29.                          FilterChain chain)   
  30.         throws IOException, ServletException {   
  31.   
  32.         // Conditionally select and set the character encoding to be used 
  33. //如果被忽略或者请求未设置编码,为了防止乱码,进行编码过滤  
  34.         if (ignore || (request.getCharacterEncoding() == null)) {   
  35. //设置请求编码为web.xml中配置的编码类型
  36.             String encoding = selectEncoding(request);   
  37.             if (encoding != null)   
  38.                 request.setCharacterEncoding(encoding);   
  39.         }   
  40.   
  41.         // Pass control on to the next filter 
  42. //由FilterChain进行过滤处理,而不是该Filter  
  43.         chain.doFilter(request, response);   
  44.   
  45.     }   
  46.   
  47.  //主要从配置文件中读取配置项并进行赋值
  48.     public void init(FilterConfig filterConfig) throws ServletException {   
  49.   
  50.         this.filterConfig = filterConfig;   
  51.   //从web.xml读取配置的编码,如gbk,utf-8等,赋值给encoding
  52.         this.encoding = filterConfig.getInitParameter("encoding");  
  53.   //从web.xml读取是否忽略
  54.         String value = filterConfig.getInitParameter("ignore");  
  55.         if (value == null)  
  56.             this.ignore = true;  
  57.         else if (value.equalsIgnoreCase("true"))  
  58.             this.ignore = true;  
  59.         else if (value.equalsIgnoreCase("yes"))   
  60.             this.ignore = true;   
  61.         else  
  62.             this.ignore = false;   
  63.   
  64.     }   
  1.  protected String selectEncoding(ServletRequest request) {   
  2.   
  3.         return (this.encoding);   
  4.   
  5.     }   
  6.   
  1. <filter>  
  2.     <filter-name>Set Character Encoding</filter-name>  
  3.     <filter-class>filters.SetCharacterEncodingFilter</filter-class>  
  4.     <init-param>  
  5.       <param-name>encoding</param-name>  
  6.       <param-value>UTF-8</param-value>  
  7.     </init-param>  
  8.   </filter>  
  9.   <filter-mapping>  
  10.     <filter-name>Set Character Encoding</filter-name>  
  11.     <url-pattern>/*</url-pattern>  
  12. </filter-mapping>  
分享到:
评论

相关推荐

    过滤器例子的代码

    标题"过滤器例子的代码"表明我们将探讨一个关于过滤器的实际应用代码。描述中提到的"filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行,并且可以对目标资源访问前后进行逻辑处理",进一步解释了过滤...

    过滤器例子

    在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它允许我们在数据处理的前后阶段插入自定义逻辑。...通过学习和实践这个"过滤器例子",你将能够更好地掌握这一关键技术,并将其运用到实际的开发工作中。

    JAVA WEB中的Servlet过滤器

    在实践中,你可以尝试创建一个简单的过滤器,观察其在请求处理流程中的行为,逐步掌握这个强大的工具。 总的来说,Servlet过滤器是Java Web开发中的重要概念,它为开发者提供了在请求和响应之间插入自定义逻辑的...

    java收集tomcat信息及http收集小例子

    例如,可以创建一个Servlet或者过滤器来记录特定的HTTP请求信息,或者监控特定业务逻辑的执行时间。 5. **日志分析**:Tomcat的日志文件也是收集信息的重要来源。通过解析`catalina.out`和其他相关日志,可以了解...

    如何配置Filter过滤器处理JSP中文乱码

    首先,声明一个新的过滤器,给它一个唯一的名称,例如`EncodingFilter`,并指定过滤器的实现类,如`com.filters.SetCharacterEncodingFilter`。在这个例子中,`&lt;init-param&gt;`标签用于设置字符编码和忽略大小写的参数...

    java过滤器的使用

    Java过滤器(Filter)是Java Web开发中的一个重要概念,它主要应用于Servlet容器中,如Tomcat、Jetty等。过滤器允许我们在请求被发送到目标资源(如Servlet、JSP页面)之前或之后进行预处理和后处理。在这个场景中,...

    servlet过滤器

    Servlet过滤器是Java Web开发中的一个重要组件,它在Servlet生命周期中扮演着预处理和后处理的角色。在Tomcat这样的Servlet容器中,过滤器允许开发者在请求到达Servlet之前或Servlet响应发送回客户端之后对请求和...

    使用过滤器解决中文乱码问题

    下面是一个简单的示例代码,展示了如何创建一个名为`CharacterEncodingFilter`的过滤器类,用于设置请求的字符编码: ```java import java.io.IOException; import javax.servlet.Filter; import javax.servlet....

    servlet第一个例子(工程+tomcat)

    在本示例中,我们将深入探讨如何创建并运行一个简单的Servlet程序,同时结合Tomcat服务器进行部署。首先,我们需要了解Servlet的基本概念。 Servlet是一个Java类,它扩展了服务器的功能,可以处理HTTP请求,并返回...

    20211210tomcat2.zip Servlet简单例子

    Servlet是Java Web开发中的核心组件,它是一种服务器端的Java...通过分析和实践这个"20211210tomcat2.zip"中的例子,你可以深入理解Servlet的工作原理,为进一步学习JSP、过滤器、监听器等Java Web技术打下坚实基础。

    struts2+spring+tomcat做的购物小例子

    Struts2、Spring和Tomcat是Java Web开发中常见的三个技术框架,它们共同构建了一个功能丰富的购物应用程序。这里我们将深入探讨这三个技术的核心概念以及如何在实际项目中整合使用。 Struts2是一个基于MVC(Model-...

    Servlet过滤器小实例

    // 已登录,继续执行链中的下一个过滤器或Servlet chain.doFilter(request, response); } } catch (Exception e) { e.printStackTrace(); } } public void init(FilterConfig filterConfig) { config = ...

    springboot+jsp 使用过滤器.do

    这个例子"springboot+jsp 使用过滤器.do"显然展示了如何在Spring Boot应用中集成JSP并添加过滤器功能。这里我们将深入探讨Spring Boot、JSP以及过滤器的相关知识点。 **1. Spring Boot** Spring Boot是Spring框架...

    tomcat 跨域lib jar包

    描述中的信息虽然简洁,但我们可以推测这是一个包含两个jar包的压缩文件,它们可能与实现Tomcat CORS过滤器功能有关。这两个文件分别是: 1. cors-filter-1.7.1.jar:这是CORS过滤器的核心库,包含了处理跨域请求的...

    WebService例子及其如何部署到tomcat上面

    4. **部署描述符(Deployment Descriptor)**:比如`web.xml`,用于配置Web应用的元数据,包括Servlet和过滤器的配置。 5. **服务发布(Service Endpoint Interface, SEI)**:JAX-WS使用SEI来生成服务端点实例,这...

    tomcat的使用方法

    在提供的文档`tomcat的使用方法(免费带例子).doc`中,你会发现更具体的步骤和示例,包括如何创建一个简单的"Hello, World!" Web应用,以及如何在Tomcat上部署和运行。 总之,掌握Tomcat的使用对于Java Web开发者至...

    websocket+tomcat+jetty+netty

    在这个例子中,可能包含了实现WebSocket服务器端逻辑的Servlet或过滤器,以及相关的配置文件。 总结来说,"websocket+tomcat+jetty+netty"这个主题涵盖了WebSocket协议及其在不同服务器框架中的实现。Tomcat、Jetty...

    jsp 写的 一个小例子

    【标题】"jsp 写的 一个小例子"揭示了这个压缩包内容是关于使用Java Server Pages(JSP)技术开发的一个Web应用程序实例。JSP是一种动态网页开发技术,它允许开发者在HTML或XML文档中嵌入Java代码,从而实现服务器端...

    使用CAS 在Tomcat 中实现单点登录实例教程,有例子和参考

    单点登录(Single Sign-On,简称SSO)是一种网络身份验证机制,允许用户在一个系统上登录后,无需再次认证即可访问多个相互信任的系统。在这个实例教程中,我们将重点讨论如何使用中央认证服务(Central ...

    java_tomcat安装包.rar

    在这个例子中,我们有一个rar压缩包,这可能包含解压后的Tomcat目录结构。 2. **解压**:使用解压缩工具(如WinRAR)将"java_tomcat安装包.rar"解压到一个合适的目录。解压后,你会看到一个类似"apache-tomcat-x.x....

Global site tag (gtag.js) - Google Analytics