Java Web应用开发课件第09章.ppt

上传人(卖家):momomo 文档编号:7405601 上传时间:2023-12-24 格式:PPT 页数:11 大小:122KB
下载 相关 举报
Java Web应用开发课件第09章.ppt_第1页
第1页 / 共11页
Java Web应用开发课件第09章.ppt_第2页
第2页 / 共11页
Java Web应用开发课件第09章.ppt_第3页
第3页 / 共11页
Java Web应用开发课件第09章.ppt_第4页
第4页 / 共11页
Java Web应用开发课件第09章.ppt_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、9.1.1 Filter概述 Filter Filter 的基本工作原理的基本工作原理 :当在:当在 web.xml web.xml 中注册了中注册了一个一个 Filter Filter 来对某个来对某个 Servlet Servlet 程序进行拦截处理程序进行拦截处理时,这个时,这个 Filter Filter 就成了就成了 Servlet Servlet 容器与该容器与该 Servlet Servlet 程序的通信线路上的一道关卡,该程序的通信线路上的一道关卡,该 Filter Filter 可以对可以对 Servlet Servlet 容器发送给容器发送给 Servlet Servlet

2、 程序的请求和程序的请求和 Servlet Servlet 程序回送给程序回送给 Servlet Servlet 容器的相应进行拦截,容器的相应进行拦截,可以决定是否将请求继续传递给可以决定是否将请求继续传递给 Servlet Servlet 程序,以程序,以及对请求和相应信息是否进行修改及对请求和相应信息是否进行修改.9.1.2 Filter的实现(1)创建一个类,实现)创建一个类,实现javax.servlet.Filter接口,并且实现其接口,并且实现其中的中的init()、()、doFilter()和()和destroy()方法()方法.(2)将过滤的任务放到)将过滤的任务放到doFi

3、lter(ServletRequest,ServletResponse,FilterChain)方法中)方法中,其中参数其中参数ServletRequest和和ServletResponse为传递给方法的请求和为传递给方法的请求和响应参数,而响应参数,而FilterChain是用来把请求和响应传递给下一个是用来把请求和响应传递给下一个Filter或者其他或者其他JSP/Servlet等资源等资源。(3)在)在web.xml注册这个注册这个Filter,并指定它将过滤的页面,并指定它将过滤的页面 9.1.2 Filter的实现-案例例例9-1:一个简单的:一个简单的Filter实现。功能描述:实

4、现。功能描述:当客户端请求此网站的任何一个资源时,都需要先通过这个过滤器当客户端请求此网站的任何一个资源时,都需要先通过这个过滤器,该,该Filter将会在一个文本文件上写入客户的的访问时间和将会在一个文本文件上写入客户的的访问时间和IP地址地址 public class Myfilter implements Filter public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)throws IOException,ServletException HttpServletRequest req

5、uest=(HttpServletRequest)req;/获取获取WEB应用根目录应用根目录 String path=request.getSession().getServletContext().getRealPath(/);/把文件放到把文件放到WEB应用根目录下应用根目录下 File file=new File(path+test.txt);FileWriter resultFile=new FileWriter(file,true);PrintWriter myFile=new PrintWriter(resultFile);String clientIP=request.getR

6、emoteAddr();/获取客户端获取客户端IP Date date=new Date();myFile.print(时间:时间:+date+);myFile.println(客户客户IP:+clientIP);resultFile.close();/关闭文件流关闭文件流 /把请求和响应传递给下一个把请求和响应传递给下一个Filter或者其或者其他他JSP/Servlet等资源等资源 chain.doFilter(req,res);public void init(FilterConfig config)throws ServletException /初始化方法初始化方法public vo

7、id destroy()Myfilter com.csmy.filter.Myfilter Myfilter /*Filter的实现-案例 配置过滤器:过滤器要起作用必需在配置过滤器:过滤器要起作用必需在web.xml中添加如下配置代码中添加如下配置代码 Init()和和destroy()方法方法可以没有代码,但方法可以没有代码,但方法必须写上必须写上 Filter的应用请参考例的应用请参考例9-2和例和例9-39.2 Listener 用 于 处 理 会 话 事 件 的 监 听 器用 于 处 理 会 话 事 件 的 监 听 器 H t t p S e s s i o n L i s t e

8、n e r 和和HttpSessionAttributesListener。当一个。当一个HttpSession刚被创建刚被创建(c r e a t e d)或 者 失 效()或 者 失 效(i n v a l i d a t e d)的 时 候,将 会 通 知)的 时 候,将 会 通 知HttpSessionListener;当往一个;当往一个HttpSession中添加、删除或者替换一中添加、删除或者替换一个属性的时候,将会通知个属性的时候,将会通知HttpSessionAttributesListener;用于处理用于处理ServletContext事件的监听器事件的监听器Servlet

9、ContextListener和和ServletContextAttributesListener。当。当ServletContext被创建的时候,被创建的时候,或 者或 者 S e r v l e t C o n t e x t 即 将 关 闭 的 时 候,都 会 通 知即 将 关 闭 的 时 候,都 会 通 知ServletContextListener;当往;当往ServletContext添加、删除或者替换一添加、删除或者替换一个属性的时候,将会通知个属性的时候,将会通知ServletContextAttributesListener。ServletContextListener用于监

10、听用于监听ServletContext的变化,它有两个方法:的变化,它有两个方法:(1)servletContextInitialized(ServletContextEvent event)当当ServletContext创建的时候,创建的时候,Servlet容器将会调用这个方法。容器将会调用这个方法。(2)servletContextDestroyed(ServletContextEvent event)当当ServletContext销毁的时候(例如关闭应用服务器或者重新加载应用),销毁的时候(例如关闭应用服务器或者重新加载应用),Servlet容器将会调用这个方法。容器将会调用这个方法

11、。9.2.1 ServletContextListener当相关事件发生时当相关事件发生时,Servlet容器会自动调用上面的方法,并会用容器会自动调用上面的方法,并会用javax.servlet.ServletContextEvent类封装一个事件对象传递到类封装一个事件对象传递到方法中。方法中。ServletContextEvent类有一个类有一个getServletContext()方法,可以获方法,可以获得创建的或者将要销毁的得创建的或者将要销毁的ServletContext对象对象 public class Mylistener implements ServletContextLi

12、stener final static String driver=com.mysql.jdbc.Driver;public void contextDestroyed(ServletContextEvent event)public void contextInitialized(ServletContextEvent event)tryClass.forName(driver);System.out.print(数据库驱动程序加载成功数据库驱动程序加载成功);catch(Exception e)System.out.print(数据库驱动程序加载失败数据库驱动程序加载失败);System.

13、out.print(e.toString();ServletContextListener-案例 例例9-4:ServletContextListener的例子,加载数据库驱动的例子,加载数据库驱动(3)配置监听器:监听器要起作用必需在)配置监听器:监听器要起作用必需在web.xml文件中添加如下代码:文件中添加如下代码:com.csmy.listener.Mylistener 当当 S e r v l e t C o n t e x t 中 的 属 性 值 发 生 改 变 的 时 候,可 以 通 过中 的 属 性 值 发 生 改 变 的 时 候,可 以 通 过ServletContextAt

14、tributeListener来监听它们。可以自己定义一个类,让来监听它们。可以自己定义一个类,让它实现它实现ServletContextAttributeListener接口,并且实现下面的方法:接口,并且实现下面的方法:9.2.2 ServletContextAttributeListener void attributeAdded(ServletContextAttributeEvent event):当往):当往ServletContext中加入中加入 一个属性的时候,将会调用这个方法;一个属性的时候,将会调用这个方法;void attributeRemoved(ServletCont

15、extAttributeEvent event):当):当从从ServletContext中删除一个属性的时候,将会调用这个方法:中删除一个属性的时候,将会调用这个方法:void attributeReplaced(ServletContextAttributeEvent event):当):当改变改变ServletContext中属性值的时候,将会调用这个方法。中属性值的时候,将会调用这个方法。9.2.3 HttpSessionListener当创建一个当创建一个HttpSession对象或者销毁一个对象或者销毁一个HttpSession对象的对象的时候,可以用时候,可以用HttpSessi

16、onListener来监听,可以定义一个类,来监听,可以定义一个类,让它实现让它实现HttpSessionListener接口,并且实现接口的两个方接口,并且实现接口的两个方法:法:void sessionCreated(HttpSessionEvent hse):):当一个当一个HttpSession对象被创建时,将会调用这个方法;对象被创建时,将会调用这个方法;void sessionDestroyed(HttpSessionEvent hse):):当一个当一个HttpSession超时或者调用超时或者调用 HttpSession的的invalidate()方法让它销毁时,将会调用这个方

17、法。()方法让它销毁时,将会调用这个方法。9.2.3 HttpSessionListener-案例public class CountUser implements ServletContextListener,HttpSessionListener private int count=0;private ServletContext ctx=null;public void contextDestroyed(ServletContextEvent sce)ctx=null;public void contextInitialized(ServletContextEvent sce)ctx=s

18、ce.getServletContext();/获得获得ServletContext对象对象 例例9-5:用:用HttpSessionListener来统计在线人数来统计在线人数public void sessionCreated(HttpSessionEvent event)count+;ctx.setAttribute(OnlineUser,new Integer(count);public void sessionDestroyed(HttpSessionEvent event)count-;ctx.setAttribute(OnlineUser,new Integer(count);(

19、2)配置监听器:在)配置监听器:在web.xml中添加如下的配置代码。中添加如下的配置代码。com.csmy.listener.CountUser 9.2.4 HttpSessionAttributeListener当一个会话中的属性发生改变时,可以用当一个会话中的属性发生改变时,可以用HttpSessionAttributeListener来来监听它。它有三个方法:监听它。它有三个方法:void attributeAdded(HttpSessionBindingEvent e):当往会话中加):当往会话中加入一个属性的时候,将会调用这个方法;入一个属性的时候,将会调用这个方法;void attributeRemoved(HttpSessionBindingEvent e):当从会话):当从会话中删除一个属性的时候,将会调用这个方法;中删除一个属性的时候,将会调用这个方法;void attributeReplaced(HttpSessionBindingEvent e):当改变会话):当改变会话中的属性值的时候,将会调用这个方法。中的属性值的时候,将会调用这个方法。监听器最常用的地方是实现网站计数器监听器最常用的地方是实现网站计数器,请参考例请参考例9-6

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(Java Web应用开发课件第09章.ppt)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|