JavaWeb——Day14_2
来源:互联网 发布:易语言音乐播放器源码 编辑:程序博客网 时间:2024/05/15 13:01
*4.过滤器_基础
servlet filter
很重要的技术。
servlet的乱码。
之前解决乱码问题是在每一个servlet加入response.setcon和Request.setchar解决。
但是如果有多个sevlet呢?
--完全可以用过滤器访问。
--权限控制。
Servlet规范中 Servlet Listener Filter
1.开发Filter
想要开发一个过滤器需要如下两个步骤:
(1)写一个类实现特定的接口Filter
生命周期:当服务器启动时,web应用加载后,立即创建这个web应用中的所有的过滤器,过滤器创建出来后立即调用init方法执行初始化的操作.
创建出来后一直驻留在内存中为后续的拦截进行服务.每次拦截到请求后都会导致doFilter方法执行.
在服务器关闭或web应用被移除出容器时,随着web应用的销毁过滤器对象销毁.销毁之前调用destory方法执行善后工作.
init
FilterConfig:代表web.xml中对当前过滤器的配置信息
~获取ServletContext对象
~获取初始化信息
getInitParameter
getInitParameterNames
doFilter
request
response
FilterChain:
代表过滤器链的对象.
一个资源可能被多个过滤器所拦截到,拦截的顺序和过滤器在web.xml中filter-mapping的配置顺序相同.
所有对当前资源访问进行拦截的过滤器按照拦截顺序就组成了一个过滤器链.这个过滤器链的最后一个节点是要访问的资源.
Filter中调用FilterChain提供了doFilter方法,这个方法一旦被调用就表明当前过滤器没有问题了,请执行过滤器链的下一个节点.如果下一个节点是资源则直接执行了资源
destory
(2)在web.xml中注册一下过滤器
<filter>
<filter-name>Demo1Filter</filter-name> -- 给过滤器起一个名字
<filter-class>com.itheima.filter.Demo1Filter</filter-class> -- 过滤器的处理类
<init-param>--可以配置当前过滤器的初始化信息,可以配置多个,在Filter中利用FilterConfig对象来获取
<param-name>name1</param-name>
<param-value>value1</param-value>
</init-param>
</filter>
<filter-mapping> -- 一个Filter可以配置多个filter-mapping
<filter-name>Demo1Filter</filter-name>
<url-pattern>/servlet/Demo1Servlet</url-pattern> -- 一个Filtermapping中可以配置多个url-partten,这个url-partten的写法和servlet-mapping中的写法相同
<url-pattern>/servlet/*</url-pattern>
<url-pattern>/*</url-pattern>
<url-pattern>*.do</url-pattern>
<servlet-name>Demo3Servlet</servlet-name>
--也可以配置多个servlet-name,其中填入servlet的名字明确的通知要拦截哪个名字的Servlet
<dispatcher>REQUEST</dispatcher>
--配置拦截哪种方式的对资源的访问可以是REQUEST/FORWARD/INCLUDE/ERROR四个值之中的一个,可以配置多个dispatcher,如果一个都不配则默认是REQUEST
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
怎么放行访问的资源?
FilterChain:
代表过滤器链的对象.
一个资源可能被多个过滤器所拦截到,拦截的顺序和过滤器在web.xml中filter-mapping的配置顺序相同.
所有对当前资源访问进行拦截的过滤器按照拦截顺序就组成了一个过滤器链.这个过滤器链的最后一个节点是要访问的资源.
Filter中调用FilterChain提供了doFilter方法,这个方法一旦被调用就表明当前过滤器没有问题了,请执行过滤器链的下一个节点.如果下一个节点是资源则直接执行了资源
init
FilterConfig:代表web.xml中对当前过滤器的配置信息
~获取ServletContext对象
~获取初始化信息
getInitParameter
getInitParameterNames
*5.过滤器案例_全站乱码过滤器
解决:
get提交:
get提交 之前是手动编解码的。
怎么改造呢?
接下来再改造getparamvalus和getparam的时候用的方法差不多。不用再写一遍了。
检验:
如果翻看源码会知道:
细节问题:
*6.过滤器案例_30天内自动登录过滤器
- JavaWeb——Day14_2
- JavaWeb——Day01_1
- JavaWeb——Day01_2
- JavaWeb——Day02_1
- JavaWeb——Day02_2
- JavaWeb——Day03_1
- JavaWeb——Day03_2
- JavaWeb——Day04_1
- JavaWeb——Day04_2
- JavaWeb——Day05_1
- JavaWeb——Day05_2
- JavaWeb——Day06_1
- JavaWeb——Day06_2
- JavaWeb——Day07_1
- JavaWeb——Day07_2
- JavaWeb——Day08
- JavaWeb——Day09_1
- JavaWeb——Day09_2
- select简单使用
- Java基础 常见面试题(一)
- Linux下 使用Repo和Git下载Android源代码并编译
- st(state-threads) coroutine和stack分析
- pthread_create
- JavaWeb——Day14_2
- 第十一周---回文素数
- 深入理解java异常处理机制
- 【TelephonyManager研究系列】NETWORK_TYPE详解
- 学习android annotations环境搭建及应用总结集锦
- 安卓四大组件的复习——实现IP拨号Demo
- Eclipse安装插件的“最好方法”:dropins文件夹的妙用
- uml系列(四)——类图
- 第十一周项目六回文,素数(2)