Java技术积累——AOP思想之Filter的使用
来源:互联网 发布:网络作家作品集 编辑:程序博客网 时间:2024/05/17 04:13
在.NET中也曾介绍过关于Filter的使用。它是AOP思想的一个很重要的应用。同样在Java中同样也是支持filter的。在这里仅以温故的目的再总结一下filter的一些基础知识点。
1、.net mvc中有关filter的使用
http://blog.csdn.net/wangyy130/article/details/44241957
2、Java小例子
在DRP视频中用到了filter是关于JSP页面乱码问题,给每个页面设置编码格式,如果按照平常的书写习惯,需要在每个页面中都进行设置:request.setCharacterEncoding("UTF-8");
为了方便,省去重复的代码,这里用到了filter,具体代码如下:
public class CharsetEncodingFilter implements Filter { //这里要实现Filter这个父类private String encoding;/** * 真正要执行的filter */public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("CharsetEncodingFilter--->>begin");//设置字符集request.setCharacterEncoding(encoding);//继续执行,这里用doFilter这个方法来保证继续执行JSP下面的代码chain.doFilter(request, response);}/** * 初始化操作,这里可以获取参数 */public void init(FilterConfig filterConfig) throws ServletException {this.encoding=filterConfig.getInitParameter("encoding"); //获得初始化参数System.out.println("CharsetEncodingFilter--->>init()"+encoding);}}从上面代码中并不能真正实现filter来拦截所有的JSP进行设置编码格式。还需要有配置文件的设置,由配置文件提前声明filter拦截的对象。这样在执行的时候,只要符合要求的类或方法就会被拦截到filter中去执行响应的操作。
web.xml
<filter> <filter-name>CharsetEncodingFilter</filter-name> <filter-class>com.bjpowernode.drp.util.filter.CharsetEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <!--设置初始化参数--> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharsetEncodingFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>在这个xml文件中,拦截的对象是由url-pattern来指定的。这里的设置和servlet是一样的。只是servlet种配置的url-pattern指的是servlet对应的URL地址,而filter中则指的是要执行filter操作的类或方法。
三、总结
不难发现filter的使用应用了AOP思想,它可以拦截所有在url-pattern中所指定的内容,并且在这个拦截器中可以加入自己想要加入的操作或执行的方法。那么这样就为我们在项目中想要加入日志管理,权限管理提供了很大的方便。再者,之前在学习的过程中,还讨论过代理模式,关于代理模式,也是AOP思想的典型应用之一,可分为静态代理和动态代理。而在这里的filter的使用似乎类似于静态代理,但却可以灵活配置。动态代理更加灵活方便,可在运行时随时加载代理所想要委托的接口的方法,若与filter结合可能会发挥更大的功效,更深层次的应用还有待更深入的学习和探究!
0 0
- Java技术积累——AOP思想之Filter的使用
- MVC中的AOP思想——Filter
- Filter,一种aop编程思想的体现
- JAVA积累——Filter过滤器
- 【Java技术点滴】——Filter基本使用与扩展
- 【Java技术点滴】——JSTL教程之分层思想
- 无招有招——工作积累编程思想之不可不知的XML的五种用途
- 技术积累 — IIC之深入理解
- (1) Java 技术的积累
- AOP之 Filter实用
- Java Servlet的Filter 技术
- PHP之AOP思想
- Java知识积累——Properties类的使用示例
- 爬虫技术之——bloom filter(含java代码)
- 基于AOP设计思想的拦截器(Interceptor)与传统拦截器(Filter)的区别
- JAVA AOP编程之动态代理技术
- Java技术积累——用最原始的代码见证分页查询实现原理
- Java技术积累递归调用——解析树的基本实现原理
- mac下获取sha1值
- HTTP Live Streaming直播(iOS直播)技术分析与实现
- 【Java语言】基础知识一
- 【转】Vim 字符编码转换
- Collections的自定义排序sort Comparator
- Java技术积累——AOP思想之Filter的使用
- jstl根据字符串进行判断
- 硬盘容量换算公式
- loadrunner链接mysql数据库
- cookie的使用
- linux 关于进程查找删除的命令
- PAT1038 统计同成绩学生
- 链表java与c++实现
- firefxo 关闭导入向导