帮做非法网站,室内设计专用软件,数据分析培训机构哪家好,营销型网站报价文章目录 Listener和ServletContext1.0 ServletContext对象介绍1.1 Listener概述1.2 Listener快速入门① xml版本② 注解版本 1.3 案例#xff1a;模拟spring框架 Listener和ServletContext
补充#xff1a;1.ServletContext 表示上下文对象#xff0c;属于接口#xff0c… 文章目录 Listener和ServletContext1.0 ServletContext对象介绍1.1 Listener概述1.2 Listener快速入门① xml版本② 注解版本 1.3 案例模拟spring框架 Listener和ServletContext
补充1.ServletContext 表示上下文对象属于接口代表整个web项目可以使用方法获取当前web项目的所有文件的MIME类型2.之前学习能够共享数据的对象1request: 只能在一次请求一次响应中进行数据的共享 》请求转发2session只能在一次会话过程中可以有多次请求和响应3ServletContext只要项目存在就可以共享数据多次会话多次请求和响应都可以共享数据操作整个项目的配置文件范围大小 ServletContext session request1.0 ServletContext对象介绍
ServletContext对象当tomcat服务器启动的时候会为每个web项目创建一个唯一的ServletContext对象该对象代表当前整个Web应用项目。该对象不仅封装了当前web应用的所有信息而且实现了多个servlet的数据共享.在ServletContext中可以存放共享数据ServletContext对象是真正的一个全局对象凡是web容器中的Servlet都可以访问。
在每个项目中可以有多个Servlet程序每个Servlet程序都是独立的。当前这个项目的配置信息就必须使用描述这个项目的ServletContext对象获取。 方法名描述setAttribute(String name,Object object)向ServletContext中存数据getAttribute(String name)从ServletContext中取数据removeAttribute(name)从ServletContext中移除数据String getRealPath(String path)返回资源文件在服务器文件系统上的真实路径(文件的绝对路径)getMimeType(fileName)获取服务器中文件类型.txt text/plain .html text/html
ServletContext对象tomcat为每一个web项目单独创建的一个上下文知上知下贯穿全文对象。有如下功能
1.可以在多个servlet之间共享数据
存放setAttribute()
获得getAttribute()
删除removeAttribute()
2.可以获得当前WEB项目中的指定资源文件
String path getRealPath( String string);
需求1如何获取上下文servletContext对象。
使用HttpServlet类的父类 GenericServlet 中的方法:getServletContext();代码如下
/*获取上下文ServletContext对象使用HttpServlet类的父类 GenericServlet 中的方法:getServletContext();*/
WebServlet(/servletContextDemoServlet)
public class ServletContextDemoServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取ServletContext类的对象ServletContext servletContext getServletContext();}
}需求2如何获取服务器中每个文件的路径。例如在当前项目下的web文件夹下放一个1.jpg的图片获取其真实路径(绝对路径)。
WebServlet(/servletContextDemoServlet)
public class ServletContextDemoServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {ServletContext servletContext getServletContext();//如何获取服务器中每个文件的路径。// 例如在当前项目下的web文件夹下放一个1.jpg的图片获取其真实路径(绝对路径)。String realPath servletContext.getRealPath(/1.jpg);/*输出结果realPath F:\ideawork\jiuyeban2\heima60\heima03\out\artifacts\web_war_exploded\1.jpg说明我们的项目在发布的时候会被打成一个war包这个war包下的class文件会被放在tomcat下被运行。所以这里获取的真实路径是这个war包下的1.jpg所在的路径。*/System.out.println(realPath realPath);}
}说明
获取结果
realPath
说明我们的项目在发布的时候会被打成一个war包这个war包下的class文件会被放在tomcat下被运行。所以这里获取的真实路径是这个war包下的1.jpg所在的路径。需求3获取当前项目下的1.jpg在服务器中的文件类型。
/*需求3获取当前项目下的1.jpg在服务器中的文件类型。getMimeType(1.jpg);这里书写获取文件类型的文件名和后缀名即可*/String mimeType servletContext.getMimeType(1.jpg);System.out.println(mimeType mimeType);//mimeType image/jpeg注意对于方法 getMimeType(“1.jpg”);这里书写获取文件类型的文件名和后缀名即可
总结
1.ServletContext表示上下文对象代表整个web项目tomcat一启动就会创建该接口对象关闭tomcat就会消失
2.ServletContext属于对象多次会话多次请求限制三个域对象范围ServletContext HttpSession HttpServletRequest
3.ServletContext其他作用
1获取文件真实路径 String getRealPath(String path) 参数path如果书写的是相对路径相对的是webapp
2获取文件的MIME类型 String getMimeType(String file) 参数file只书写文件名后缀名即可不会判断是否存在
1.1 Listener概述
说明
javaweb中的监听器是监听 ServletContext HttpSession HttpServletRequest 三个对象创建和销毁的同时监听是哪个对象中数据的变化就是监听属性的变化setAttribute removeAttribute 1.ServletContext 是在tomcat启动创建关闭tomcat销毁 2.HttpSession 是在浏览器第一次访问执行request.getSession()创建销毁时间130min 2)执行invalidate() 3.HttpServletRequest 是浏览器第一次访问创建浏览器接收到服务器的响应就销毁 # 监听
1. 设置监听器的人
2. 监听器
2. 监听器目标: 被监听的对象
3. 监听器工作: 被监听的对象执行某种行为,监听器就开始工作# web里面
1. 雇佣人 : web程序开发者
2. 监听器例子A1). 监听器A: ServletContextListener ****2). 目标 : 监听ServletContext对象3). 执行 : 监听ServletContext对象创建和销毁
3. 监听器例子B1). 监听器A: HttpSessionListener2). 目标 : HttpSession对象3). 执行 : 监听HttpSession对象创建和销毁
4. 监听器例子C1). 监听器A: HttpRequestListener2). 目标 : HttpRequest对象3). 执行 : 监听HttpRequest对象创建和销毁
5. 监听器例子D1). 监听器A: ServletContextAttributeListener ****2). 目标 : ServletContext对象3). 执行 : 监听ServletContext对象增删改数据 (add,remove) 当我们向ServletContext对象中添加数据(setAttribute())和删除数据(removeAttribute())就会被ServletContextAttributeListener监听器监听HttpSessionAttributeListener HttpRequestAttributeListener生活中的监听器
我们很多商场有摄像头监视着客户的一举一动。如果客户有违法行为商场可以采取相应的措施。
javaweb中的监听器
在我们的java程序中有时也需要监视某些事情一旦被监视的对象发生相应的变化我们应该采取相应的操作。
监听web三大域对象HttpServletRequest、HttpSession、ServletContext 创建和销毁
场景
历史访问次数、统计在线人数、系统启动时初始化配置信息
监听器的接口分类
事件源监听器接口时机ServletContextServletContextListener上下文域创建和销毁ServletContextServletContextAttributeListener上下文域属性增删改的操作HttpSessionHttpSessionListener会话域创建和销毁HttpSessionHttpSessionAttributeListener会话域属性增删改的操作HttpServletRequestServletRequestListener请求域创建和销毁HttpServletRequestServletRequestAttributeListener请求域属性增删改的操作
1.2 Listener快速入门
监听器在web开发中使用的比较少,见的机会就更少了,今天我们使用ServletContextListenner来带领大家学习下监听器,因为这个监听器是监听器中使用率最高的一个,且监听器的使用方式都差不多。
我们使用这个监听器可以在项目启动和销毁的时候做一些事情,例如,在项目启动的时候加载配置文件。
步骤分析
1. 创建一个普通类实现ServletContextListenner2. 重写方法监听ServletContext创建监听ServletContext销毁3. 配置web.xml注解 掌握① xml版本
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;/*设置监听器的人: 开发者监听器 : MyListener监听器目标 : ServletContext 对象监听器的工作:1). 当ServletContext 对象创建的时候就会执行contextInitialized方法ServletContext是tomcat启动时就会创建 (早于Filter和Servlet)2). 当ServletContext 对象销毁的时候就会执行contextDestroyed方法ServletContext是tomcat关闭时销毁 (晚于Filter和Servlet)这两个方法是事件驱动*/
public class MyListener implements ServletContextListener {//tomcat一启动,此方法就会运行//运用场景: spring底层封装了一个ServletContextListener加载配置文件Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println(contextInitialized);}Overridepublic void contextDestroyed(ServletContextEvent sce) {System.out.println(contextDestroyed);}
}
listenerlistener-classcom.baidu.MyServletContextListener/listener-class
/listener② 注解版本
WebListener
public class MyListener implements ServletContextListener {//tomcat一启动,此方法就会运行//运用场景: spring底层封装了一个ServletContextListener加载配置文件Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println(contextInitialized);}Overridepublic void contextDestroyed(ServletContextEvent sce) {System.out.println(contextDestroyed);}
} 1.3 案例模拟spring框架
需求可以在项目启动时读取配置文件。获取配置文件的名字。
步骤
1.在web.xml进行配置文件的配置
2.创建自定义监听器类监听ServletContext的创建和销毁
3.在自定义监听器类中实现监听器的方法
4.实现的方法体中读取web.xml文件中关于当前项目配置文件的信息
5.输出结果
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;//2.创建自定义监听器类监听ServletContext的创建和销毁
//别忘记注册监听器
WebListener
public class SpringContextListener implements ServletContextListener{//3.在自定义监听器类中实现监听器的抽象方法Overridepublic void contextInitialized(ServletContextEvent servletContextEvent) {//4.实现的方法体中读取web.xml文件中关于当前项目配置文件的信息//4.1根据事件类对象servletContextEvent调用方法获取ServletContext上下文对象ServletContext servletContext servletContextEvent.getServletContext();//4.2使用上下文对象调用方法获取web.xml配置文件中的数据/*context-paramparam-namejdbc/param-nameparam-valuejdbc.properties/param-value/context-param*/String str servletContext.getInitParameter(jdbc);System.out.println(str str);}Overridepublic void contextDestroyed(ServletContextEvent servletContextEvent) {System.out.println(释放资源....销毁。。。。);}
} !--配置当前项目的配置文件信息--!--1.在web.xml进行配置文件的配置--context-paramparam-namejdbc/param-nameparam-valuejdbc.properties/param-value/context-paramimport javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;//2.创建自定义监听器类监听ServletContext的创建和销毁
//别忘记注册监听器
WebListener
public class SpringContextListener implements ServletContextListener{//3.在自定义监听器类中实现监听器的抽象方法Overridepublic void contextInitialized(ServletContextEvent servletContextEvent) {//4.实现的方法体中读取web.xml文件中关于当前项目配置文件的信息//4.1根据事件类对象servletContextEvent调用方法获取ServletContext上下文对象ServletContext servletContext servletContextEvent.getServletContext();//4.2使用上下文对象调用方法获取web.xml配置文件中的数据/*context-paramparam-namejdbc/param-nameparam-valuejdbc.properties/param-value/context-param*/String str servletContext.getInitParameter(jdbc);System.out.println(str str);}Overridepublic void contextDestroyed(ServletContextEvent servletContextEvent) {System.out.println(释放资源....销毁。。。。);}
} !--配置当前项目的配置文件信息--!--1.在web.xml进行配置文件的配置--context-paramparam-namejdbc/param-nameparam-valuejdbc.properties/param-value/context-param