【AOP系列】(五)—Filter
来源:互联网 发布:tl wr886n主人网络 编辑:程序博客网 时间:2024/06/07 09:23
思想
面向切面编程
定义
一种横切性的Web技术。是对Request和Response请求进行拦截。只对Post请求起作用。
J2EE中的应用
【1】生命周期
Tomcat一启动,就实例化Filter。Tomcat负责new出Filter,在New的时候调用Init方法,Init方法的参数public void init(FilterConfig arg0),会读取配置文件中的内容。
【2】实现Filter需要2步:
- 实现Javax.servlet.filter接口
- 在web.xml文件中进行配置
【3】代码
CharsetEncodingFilter.java:主要完成拦截用户请求设置编码字符集。
package com.tgb.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;/** * 采用Filter统一处理字符集 * @author xuchenyang * */public class CharsetEncodingFilter implements Filter { private String encoding;//定义编码方式 /** * 用于Filter销毁前,完成某些资源的回收 */ @Override public void destroy() { } /** *实现过滤功能,该方法就是对每个请求和响应增加的额外处理 */ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("begin"); //对用户请求进行预处理:设置字符集 request.setCharacterEncoding(encoding); //下面这行代码:决定是否将请求交给Servlet继续执行 chain.doFilter(request,response); //服务器响应之后的处理 System.out.println("end"); } /** * 用于完成Filter的初始化 */ @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("init"); //从配置文件中读取编码方式 this.encoding=filterConfig.getInitParameter("encoding"); System.out.println(encoding); }}
Web.xml
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name></display-name> <!--设置Filter的名字和对应的类 --> <filter> <filter-name>CharsetEncodingFilter</filter-name> <filter-class>com.tgb.drp.util.filter.CharsetEncodingFilter</filter-class> <!--给Filter设置参数 --> <init-param> <param-name>encoding</param-name> <param-value>GB18030</param-value> </init-param> </filter> <!--设置匹配方式:即Filter的作用范围 --> <filter-mapping> <filter-name>CharsetEncodingFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> </web-app>
Filter和Servlet
二者的生命周期以及doFilter和Servlet的Service方法都很相像,不同的是Filter中通过chain.doFilter来决定是否放行用户请求。
作用和应用
- 用户授权
- 记录日志
- 请求编码解码
0 0
- 【AOP系列】(五)—Filter
- Filter系列五 谈谈启动方面
- spring系列(五):切面编程(aop)3
- Spring(五)AOP
- 【AOP系列】(二)—AOP相关概念
- MVC中的AOP思想——Filter
- spring security (五)Filter
- JavaWeb(五)Filter过滤器
- C#进阶系列——AOP?AOP!
- C#进阶系列——AOP?AOP!
- C#进阶系列——AOP?AOP!
- Spring框架 AOP (五)
- Spring详解(五)------AOP
- AngularJS(五)——filter(过滤器)
- 浅谈spring——AOP思想(五)
- 浅谈spring——AOP思想(五)
- Spring4的知识应用总结(五)——AOP
- Spring Aop(五)——给Advice传递参数
- 大整数存储及运算——求100的阶乘
- kali安装后配置
- SO 小记
- pandas 基础1
- Android Design ItemTouchHelper实现酷炫列表的移行和滑动删除效果
- 【AOP系列】(五)—Filter
- 飞机订票系统---缺陷报告
- actionscript与javascript交互(转载)
- C语言基础之变量的命名规则、定义常量、C的数据类型
- iOS root权限
- LeetCode:Minimum Depth of Binary Tree
- SPOJ 题目 375 QTREE - Query on a tree(树链剖分)
- 航班预订系统需求说明书 3.0版
- delphi 实现可移动异形窗体(附项目文件)