黑马day14 监听器&监听三大域对象
来源:互联网 发布:知乎mac版 编辑:程序博客网 时间:2024/05/16 05:45
监听三大域对象主要监听域对象的创建和销毁。因此域对象的创建和销毁一定要知道。
1.ServletContext域对象的监听
package cn.itheima.listener;import java.io.InputStream;import java.net.MalformedURLException;import java.net.URL;import java.util.Enumeration;import java.util.Set;import javax.servlet.RequestDispatcher;import javax.servlet.Servlet;import javax.servlet.ServletContext;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.ServletException;public class ApplicationListener implements ServletContextListener {/** * 当ServletContext初始化的时候加载,即当应用一加载的时候就会触发这个事件 */public void contextInitialized(ServletContextEvent sce) {System.out.println("ServletContext对象被创建了...."+sce.getServletContext());}/** * 当ServletContext对象被销毁的时候会触发这个事件 */public void contextDestroyed(ServletContextEvent sce) {System.out.println("ServletContext对象被销毁了..."+sce.getServletContext());}}web.xml文件中的配置:
<!-- 配置ServletContext对象的监听器 --> <listener> <listener-class>cn.itheima.listener.ApplicationListener</listener-class> </listener>运行结果分析:
启动和关闭应用的时候会打印:
2.Session域对象的监听
package cn.itheima.listener;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class SessionListener implements HttpSessionListener {//session 被创建的时候触发这个事件public void sessionCreated(HttpSessionEvent se) {System.out.println("session对象被创建了..."+se.getSession());}//session 被销毁的时候会触发这个事件public void sessionDestroyed(HttpSessionEvent se) {System.out.println("session对象被销毁了..."+se.getSession());}}web.xml注册监听器
<!-- 配置Session对象的监听器 --> <listener> <listener-class>cn.itheima.listener.SessionListener</listener-class> </listener>分别写一个Servlet创建session..另一个Servlet销毁session...
创建session的servlet
package cn.itheima.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class SessionDemo extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//创建session对象HttpSession session = request.getSession();session.setAttribute("name", "李卫康");}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}销毁session的servlet
package cn.itheima.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class SessionDemo2 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");String name = (String) request.getSession().getAttribute("name");response.getWriter().write(name);//session自杀了request.getSession().invalidate();}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
首先访问Demo会打印创建session触发的事件中的函数...然后访问Demo2会销毁session...会打印销毁session触发的事件
解释:session有三种死法,我演示的是自杀式的死法即调用invalidate()方法,会瞬间杀死session..
三种死法:
自杀:invalidate()
超出session的生命周期的时间默认是30分钟...会自动死亡
非正常关闭服务器...如果正常关闭服务器只是会出现session的钝化...当再打开服务器的时候就会session的活化
以上三种死法都会触发销毁session的事件,我就不演示了..
3.request对象的创建和销毁
package cn.itheima.listener;import javax.servlet.ServletRequestEvent;import javax.servlet.ServletRequestListener;public class RequestListener implements ServletRequestListener {//request对象创建的时候会触发public void requestDestroyed(ServletRequestEvent sre) {System.out.println("request对象被创建了..."+sre.getServletRequest());}//request销毁的时候会触发public void requestInitialized(ServletRequestEvent sre) {System.out.println("request对象被销毁了..."+sre.getServletRequest());}}配置文件:
<!-- 配置request对象的监听器 --> <listener> <listener-class>cn.itheima.listener.RequestListener</listener-class> </listener>运行结果:
0 0
- 黑马day14 监听器&监听三大域对象
- 黑马day14 监听器理论知识
- 黑马day14 监听器之javaBean对象的活化和钝化
- 黑马day14 监听器之javaBean对象的活化和钝化
- 黑马day14 监听器之踢人小案例
- WEB监听器(三大域对象的创建销毁监听总结)
- 写一个监听器类监听对象
- 黑马程序员-day14集合
- 黑马day14 踢人小案例
- day14<常见对象+>
- day14-面向对象总结
- 监听三个域对象的属性变更的监听器
- 黑马程序员_java基础day14
- 黑马程序员-Java API-day14
- 黑马程序员-day14-集合框架
- Servlet事件监听器、监听servletContext域对象创建和销毁、监听三个域对象属性变化
- Servlet事件监听器、监听servletContext域对象创建和销毁、监听三个域对象属性变化
- 监听器监听在线人数
- Oracle OLAP 与 OLTP 介绍
- 递归二叉树遍历
- 利用ViewPager实现可左右滑动的Action Tab
- socket实现客户端与服务端通信(三)服务端升级
- Java Web项目中的定时器实现
- 黑马day14 监听器&监听三大域对象
- lua学习总结——I/O库
- gcc/g++ undefined reference to function() 问题的解决方法
- 《java基础》抽象类和接口
- Flex Tree以及复选框tree(icon)
- 链表中环的长度(算法)
- C++异常处理 - 栈解旋,异常接口声明,异常类型和异常变量的生命周期
- 【LeetCode】Kth Smallest Element in a BST
- hdu 1874 畅通工程续(两点最短路径,spfa&&floyd)