教会你如何在java中建过滤器

preview
需积分: 0 1 下载量 173 浏览量 更新于2010-08-06 收藏 38KB DOC 举报
"JAVA 中的过滤器详解" Java 中的过滤器是一种特殊的 Servlet 用法,主要用来完成一些通用的操作。Servlet 过滤器的适用场合包括认证过滤、登录和审核过滤、图像转换过滤、数据压缩过滤、加密过滤、令牌过滤、资源访问触发事件过滤等。 Servlet 过滤器接口的构成包括三个必须实现的方法:init、doFilter 和 destroy。init 方法是 Servlet 过滤器的初始化方法,doFilter 方法完成实际的过滤操作,destroy 方法是在 Servlet 容器销毁过滤器实例前调用的方法。 在创建 Servlet 过滤器时,需要实现 javax.servlet.Filter 接口的 Servlet 类,实现 init 方法、doFilter 方法和 destroy 方法。然后,在 web.xml 文件中配置过滤器。 使用过滤器可以解决中文问题。当用户登录页面输入中文时,后台 Servlet 可能会出现乱码问题。这是因为 Servlet 默认使用 ISO-8859-1 格式编码,而中文需要使用 GBK 编码。使用过滤器可以将 ISO-8859-1 转码为 GBK,解决中文问题。 过滤器也可以用于认证用户。可以在过滤器中配置初始化参数,将不需要过滤的地址配置到这个 Filter 的配置参数中。在过滤时,如果请求地址在配置参数中,则放行,这样可以避免在程序中硬编码。 下面是一个过滤器类的示例: ``` import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class EncodingFilter implements Filter { private static String encoding; public void destroy() { System.out.println("过滤器被销毁!!!!!!"); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding(encoding); chain.doFilter(request, response); } public void init(FilterConfig config) throws ServletException { System.out.println("过滤器被加载!!!!!!"); encoding = config.getInitParameter("encoding"); } } ``` 在 web.xml 文件中配置过滤器: ``` <!-- 过滤器的配置 --> <filter> <filter-name>EncodingFilter</filter-name> <filter-class>EncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>GBK</param-value> </init-param> </filter> <!-- 过滤器的映射 --> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` Servlet 过滤器是一种非常有用的技术,可以帮助我们解决一些通用的问题,例如中文问题和认证问题。
wkjzhtljmlj
  • 粉丝: 1
  • 资源: 26
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜

最新资源