监听器的定义
1.web中有很多监听器,大致分为三类
(1)ServletContextListener 用于监听服务器的启动与关闭
(2)HttpSessionListener 用于监听session的创建与销毁
(3)ServletRequestListener 用于监听每一次请求 的开始【初始化】 与结束【销毁】
监听器的心得
(1) 服务器开启,servletcontextListener首先被使用。servletcontext被创建了;服务器关闭的前一刻才会触发其销毁监听内容
(2) 网页向controller请求,ServletRequestListener 首先检测出来,
执行了他的requestInitialized 方法,即初始化request;等待contronller事务结束后,才出发servletRequestListener的销毁事件
(3)并不是每次前端向服务器请求 都会 验证要不要创建Session ,而是当服务器调用了HttpServletRequest.getSession(true) 后,
才会创建一个服务器内独一无二的session会话 ,其session id 则是自动分配一个无序的字符串,[得到两个一样的几率非常低]然后才保存在前端[一般在cookie里面]。
(4)session 可以设置存活时间,到期后自动注销 ,但往往都是默认值,每当前端浏览器关闭后,session才开始以默认期限倒计时,
等待时间到后才销毁,并不是浏览器一关闭,就会销立马销毁 ,当然,也没必要手动对其销毁,让其自毁自灭就行,
根据这一特性,就无法让服务器判断前端用户是否仍在,想要实现这个功能,只能使用websocket 或者长轮询,长轮询太消耗资源了,不建议使用,websocket则是最好的方式!!!
(5)从Tomcat设置的cookie路径来看,它对不同的应用程序设置的cookie路径是不同的,这样不同的应用程序所用的session id是不同的,因此即使在
同一个浏览器窗口里访问不同的应用程序,发送给服务器的session id也可以是不同的。
tomcat启动会做什么事
1.创建监听端口,初始化三大监听器
2.servlet的再第一次执行时,被tomcat的ServletRequestListener监听到,创建servlet,并执行其方法,再tomcat停止,servlet被销毁
3.ServletConfig 类也是 servlet第一次被创建时创建的,每个servlet有自己的一个
主要作用:
1、可以获取 Servlet 程序的别名 servlet-name 的值
2、获取初始化参数 init-param
3、获取 ServletContext 对象
4.ServletContext
服务器开启,servletcontextListener首先被使用。servletcontext就被创建了;服务器关闭的前一刻才会触发其销毁监听内容
主要作用:
1、获取 web.xml 中配置的上下文参数 context-param
2、获取当前的工程路径,格式: /工程路径
3、获取工程部署后在服务器硬盘上的绝对路径
4、像 Map 一样存取数据
HttpServletRequest是什么
1.每次请求过来,tomcat servletRequestListen监听到请求,首先把请求的参数全部放进 HttpServletRequset对象中,
然后调用servlet的方法,将httpServletRequset对象传递到方法,供我们使用
2.里面包含请求的各种信息,我们可以获得
3.他还是一个域对象,我们可以存我们自己想存的数据,便于我们请求转发的时候获取自己想要的数据,而不是请求的参数
HttpServletResponse类是什么
1.同样每次请求过来,创建一个HSR对象,监听器监听请求,将HSR传递给servlet,用于响应数据
2.作用:响应数据和请求重定向