学习目标:
1.FilterConfig接口
2.Listener监听器
学习内容:
1.FilterConfig接口
FilterConfig 是 Servlet API 提供的一个用于获取 Filter 程序在 web.xml 文件中的配置信息的接口,该接口封装了 Filter 程序在 web.xml 中的所有注册信息,并且提供了一系列获取这些配置信息的方法。
建件一个过滤器名为MyFilter03,来获取web.xml中设置的参数。
然后在web.xml文件中配置过滤器的信息。但为了防止其他Ffler影响MyFiter03的拦截效果,这里将MyFiter03映射信息配置在web.xml文件最前端。
然后重启tomcat服务器,访问myservlet:
使用Filter实现用户自动登录
实现步骤:
1.编写User类
在chaplerO8项目中创建cnìicast/chapterO8. entity包,在该包中编写User.java来封装用户信息
2.实现登录页面和首页
(1)在chapter08项目的 WebContent 根目录中,编写login.jsp页面,该页面用于创建一个用户登录的表单,这个表单需要填写用户名和密码,以及用户自动登录的时间:
(2)在chapter08项目的 WebContent 根目录中,编写index.jsp页面,该页面用于显示用户的登录信息。如果没有用户登录,在index.jsp页面中就显示一个用户登录的超链接。如果用户已经登录,在indexjsp页面中显示登录的用户名,以及一个注销的超链接
注意,要将JSTL标签库支持的JAR包(jstl.jar和standard.jar)
3.创建Servlet
(1)编写 LoginServlet 类
在chapter08项目的cn. itcast.chapter08. filter包中,编写 LoginServlet 类,该类用于处理用户的登录请求。如果输入的用户名和密码正确,则发送一个用户自动登录的Cookie,并跳转到首页;否则会提示输入的用户名或密码错误,并跳转至登录页面login. jsp让用户重新登录 .
编写 LoginServlet 类:
(2).编写LogoutServlet类
在chapter08项目的cn, itcast,chapter08. filter包中,编写 LogoutServlet 类,该类用于注销用户登录的信息。在这个程序中首先会将Session会话中保存的User对象删除,然后将自动登录的Cookie删除,最后跳转到index. jsp。
编写LogoutServlet类:
4.创建过滤器
在chapter08项目的cn. itcast.chapter08. filter包中,编写 AutoLoginFilter 类,该类用于拦截用户登录的访问请求,判断请求中是否包含用户自动登录的Cookie。如果包含,则获取Cookie中的用户名和密码,并验证用户名和密码是否正确。如果正确,则将用户的登录信息封装到User对象存入Session域中,完成用户自动登录。
编写ALF类:
5.配置映射信息
在web. xml文件中,配置所有相关Serviet及 ALF 过滤器信息。由于要拦截用户访问资源的所有请求,因此,将过滤器<filter-mapping>元素拦截的路径设置为“/”。
<filter>
<filter-name>AutoLoginFilter</filter-name>
<filter-class>cn.itcast.chapter08.filter.AutoLoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>AutoLoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>cn.itcast.chapter08.filter.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
6.运行项目,查看结果。
2.Listener监听器
在程序开发中,经常需要对某些事件进行监听,如监听鼠标单击事件、监听键盘按下事件等此时就需要使用监听器,监听器在监听的过程中会涉及几个重要组成部分,具体如下。
(1)事件(Event):用户的一个操作,如单击一个按钮、调用一个方法、创建一个对象(2)事件源:产生事件的对象。
(3)事件监听器(Listener):负责监听发生在事件源上的事件。
(4)事件处理器:监听器的成员方法,当事件发生的时候会触发对应的处理器(成员方法)
Servlet事件监听器概述:
1.创建监听器
在chapte08项目中创建一个cn.itcast.chapter08.listener包,在该包中编写一个 MyListener 类,这个类实现了 ServletContextListener 、 HttpSessionListener 和 ServletReques 个监听器接口,并实现了这些接口中的所有方法.
2.添加监听器类信息
在chapter08项目下的web. xml文件中,添加 MyListener 事件监听器信息。
3.创建实验页面myjsp.jsp
6.设置监听超时信息
为了尽快地查看到 HttpSession 对象销毁的过程,可以在chapter08应用的web. xml文件中设置session的超时时间为2min,
<session-timeout>标签指定的超时必须为一个整数。如果这个整数为0或负整数,则session永远不会超时;如果这个数是正整数,则项目中的session将在指定分钟后超时。
监听域对象属性变更:
1.创建测试页面
编写一个testattribute.jsp
2.创建监听器
编写一个名称为Myttibutelitere的监听器类,该类实现了SrleCentributel ster、HtStpstibuteliteneree 和SerletRequestributeListener接口,并实现这些接口中的所有方法,
3.添加监听信息
在web. xm/文件中,添加 MyAttributeListener 事件监听器信息
<listener-class>
cn. itcast.chapter08. listener. MyAttributeListener
</listener-class>
</listener>
4.启动项目,查看结果
启动服务器访问testattribute.jsp页面。