up:: 过滤器案例-字符集过滤器
一:问题阐述与过滤器参数化简介
过滤器参数化:过滤器中有一些灵活变动的设置项,不用写死在程序中,而是将这些配置信息放在web.xml中的一种过滤器开发方式。
为什么需要过滤器参数化-----
问题引入:过滤器案例-字符集过滤器这篇博客中,CharacterEncodingFilter作为一个字符集过滤器,doFilter()方法中,设置编码方式为UTF-8;
二:过滤器参数化案例:web.xml中配置的方式去实现
效果:
注:
(1) 将过滤器参数写在web.xml配置文件中,当需要修改参数的时候,只需要修改配置文件后,重启程序即可;;;否则,当需要源代码时候,需要重新编译程序,重新上线,这个过程效率低,而且容易出错!
(2) 一般工作中,将需要灵活配置的设置选项放到配置文件中是非常常见的做法。
(3) 过滤器的参数可以有一个也可以有很多个:
三:过滤器参数化案例:使用注解的方式去实现
emm,采用注解形式设置参数,这些注解是写在代码中的,当需要修改参数的时候,还是需要修改源代码,重新编译,重新上传啊。。。。所以,采用注解形式去设置参数,似乎并不符合过滤器参数化的初衷哎
所以,当参数需要经常修改的时候,就选用配置的方式;参数不常修改时候就使用注解的方式,那么又因为项目中不建议两种方式混用,所以可以认为,在一般项目中最好使用配置的方式吧。
采用注解方式实现过滤器参数的时候,这个过滤器的开发形式就需要采用注解形式:
然后,在CharacterEncodingFilter这个过滤器类中,采用注解的形式如下:
● 注解中的@WebFilter()和@WebInitParam()是关键;
效果:
注:(1)过滤器参数化并没有多么高深,其本质用意就是把原本写死在程序中的参数,提取到配置文件中;通过这种方式,可以使程序更容易被阅读,更容易被维护。这种方式以前遇到过很多次,也是很常见普遍的一种方式。
这种理念和设计在大型的项目中也是必须的 !!!