DRP-filter基础
来源:互联网 发布:淘宝最低折扣哪里设置 编辑:程序博客网 时间:2024/05/22 01:49
功能介绍
filter简单来说可以改变用户操作界面请求的数据或界面返回的数据。改变Servlet的request和response。
大家可以可以看一下图可能就更能明白了。
说明:
1. 在servlet被调用之前截获;
2. 在servlet被调用之前检查servlet request;
3. 根据需要修改request头和request数据;
4. 根据需要修改response头和response数据;
5. 在servlet被调用之后截获.
实际应用
就拿大家经常遇到的一个问题,就是如果我们不设置编码格式的时候往往输入汉字存入到数据库会是乱码的格
式,所以我们经常设置编码格式在JSP调用添加,修改等操作时。所以我们就利用Filter过滤器,在调用JSP之
前先设置一下编码格式对所有的JSP页面起作用。
1.建立一个java类实现javax.servlet.Filter
- package com.bjpowernode.drp.util.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 CharsetEncodingFilter implements Filter {
-
-
- private String endcoding;
-
- @Override
- public void destroy() {
-
- }
-
- @Override
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
-
- request.setCharacterEncoding(endcoding);
-
- chain.doFilter(request, response);
- }
-
-
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
-
- this.endcoding = filterConfig.getInitParameter("encoding");
- }
-
- }
2.配置web.xml文件
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4"
- xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http:
- http:
-
- <filter>
- <!-- 设置filter的类名 -->
- <filter-name>CharsetEncodingFilter</filter-name>
- <!-- 设置filter的包名 -->
- <filter-class>com.bjpowernode.drp.util.filter.CharsetEncodingFilter</filter-class>
- <!-- 设置filter里面的参数 用CharsetEncodingFilter类里面的init方法取-->
- <init-param>
- <param-name>encoding</param-name>
- <param-value>GBK</param-value>
- </init-param>
- </filter>
-
- <!-- 配置filter对哪些Servlet或jsp起作用 -->
- <filter-mapping>
- <filter-name>CharsetEncodingFilter</filter-name>
- <url-pattern>*.jsp</url-pattern>
- </filter-mapping>
- </web-app>
其中。配置filter对哪些Servlet或JSP起作用(url-pattern)有好多种方式。
(1)精确匹配,不用任何修饰符,如:
- <filter-mapping>
- <filter-name>CharsetEncodingFilter</filter-name>
- <url-pattern>/user_maint.jsp</url-pattern>
- </filter-mapping>
- 这样就可以精确到哪个jsp上。
(2)扩展匹配,由星号“*”和扩展名组成,如:
- <filter-mapping>
- <filter-name>CharsetEncodingFilter</filter-name>
- <url-pattern>*.jsp</url-pattern>
- </filter-mapping>
-
- 对所有的以jsp为后缀的起作用。
(3)路径前缀匹配,包含一个目录和一个/*
- <filter-mapping>
- <filter-name>CharsetEncodingFilter</filter-name>
- <url-pattern>/sysmgr/*</url-pattern>
- </filter-mapping>
-
- 对sysmg这个文件夹下的jsp起作用。
(4)全部匹配,一般使用/*
- <filter-mapping>
- <filter-name>CharsetEncodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
-
- 对所有的都匹配。
结束语
Filter也是一种面向切面编程,降低了与业务之间的耦合性,主要用于解决中文乱码,用户权限验证等等问题。。还有待研究。