今天我们来介绍 Filter、Listener 这两个模块一些简单的知识和应用,接下来我们开始我们的正题 !
1. Filter(过滤器)
1.1 对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应的前后实现一些特殊的功能,我们需要知道 JSP 的底层实现也是 Servlet 所以所拦截的当然包括 JSP
1.2 如何写一个 FIiter?
a. 实现 Filter 接口(类似于 Servlet 接口,我们可以对比 Servlet 接口学习 Filter)
b. 在 web.xml 文件中映射文件 Filter
c. 配置所要拦截的资源
1.3 Filter 接口
a. Filter 对象在被 WEB 应用加载的时候便被创建, init(FilterConfig filterConfig) 方法在创建 Filter 对象的时候别调用,且只有一次;FilterConfig 对象类似于 ServletConfig 对象,可以获取当前 FilterConfig 的初始化参数;
b. doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 每次请求的拦截都会调用该方法,所以便是执行逻辑代码的方法,利用此方法拦截请求后使用方法 chain.doFilter(requset, response); 释放链接,或者传给下一个 Filter 进行拦截,或者将请求放回请求资源
c. 对于多个 Filter,其执行顺序按照 web.xml 文件中的映射顺序执行,与创建时间无关
d. 小案例之 HelloWorld
Ⅰ. 演示
Ⅱ. 功能介绍
a. 一个小登录页面,用户名和密码分别配置为当前 WEB 的应用初始化参数,通过获取请求参数和配置的初始化参数进行比较,若正确则响应欢迎页面,否则返回原页面响应错误消息;
Ⅲ. 代码
a. 登录页面
1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <html> 3 <head> 4 <title>Login</title> 5 </head> 6 <body> 7 <h3>${requestScope.message}</h3> 8 <form action="hello.jsp" method="post"> 9 UserName: <input type="text" name="name"><br><br> 10 PassWord: <input type="password" name="password"><br><br> 11 <button type="submit">Submit</button> 12 </form> 13 </body> 14 </html>