监听域对象中的属性事件监听器对应接口
ServletContenxt——ServletContenxtAttributeListener
HttpSession——HttpSessionAttributeListener
ServletRequest——ServletRequestAttributeListener
第一次访问,触发监听器add方法。 再次访问触发监听器replace方法。 销毁时触发remove方法。

注意:
在session失效前,再一次request请求,request是每次新建,可是session中的属性是执行replace方法,同样context也是执行的replace事件
属性的增加和删除的事件监听器
监听域对象的属性增加、删除、替换的三个监听器
按监听的事件划分(域对象属性的增加和删除的事件监听器)
监听域对象中的属性的增加和删除的事件监听器,Servlet规范中专门定义了监听这些对象的监听接口,并且这三个接口都定义了三个方法来处理域对象的属性的增加、删除、替换的事件(attributeAdded、attributeRemoved、attributeReplaced)。
【a】ServletContext——>ServletContextAttributeListener
【b】HttpSession——>HttpSessionAttributeListener
【c】ServletRequest——>ServletRequestAttributeListener
步骤1:创建监听事件的类,并实现相应接口,配置web.xml监听器。

步骤2:创建一个增加各个属性值的界面(留意:Tomcat容器监视ServletContext会自动加载一个JSF的类,请求访问时,还会加载一个jsp的实现类,只需了解)。
开启 Tomcat容器

request.getAttribute():值放在request域对象里面的一个属性。
request.getParameter():request请求的一个请求参数(例如:http://www.imooc.com/username=zhangsan,通过getAttribute不能获取)
监听域对象中的属性的增加和删除的事件监听器 ServletContext、HttpSession、ServletRequest对象的中属性的增加和删除有单独的事件监听器 包括 attributeAdded() attributeRemoved() attributeReplaced() @init.jsp <% request.setAttribute("requestName", "requestValue"); request.getSession().setAttribute("sessionName", "sessionValue"); request.getSession().getServletContext().setAttribute("applicationName", "applicationValue"); //request.setAttribute("requestName", "requestValue");//只有这种办法可以调用request的replace。 //request.removeAttribute("requestName");//可以调用request的remove。 %> @destory.jsp <% request.removeAttribute("requestName"); request.getSession().removeAttribute("sessionName"); request.getSession().getServletContext().removeAttribute("applicationName"); %> request.getAttribute的值获得是从request.setAttribute的值,不能获取类似www.immoc.com/username=imooc的参数值; request.getParameter是请求的参数值,如www.immoc.com/username=imooc。 request——request request.getSession()——session request.getSession().getServletContext()——application
按监听的事件划分:

request.getAttribute()与request.getParameter()的区别:
1.request.getParameter()方法获取的是超链接中传的参数,如http://localhost:8080/projectName/index.jsp?username=zhangsan&password=123456中的username和password 2.request.getAttribute()方法获取的是request对象的属性,只有先通过request.setAttribute()方法定义对象,才能执行request.getAttribute()方法获取属性
小知识点:
request的getAttribute()和getParameter()区别:
request.getAttribute()只能通过 request.setAttribute("name",参数)来获取;
reques.getParameter()则通过URL参数,或前链接页面关系的参数来获取
@Listener---监听器对象的属性的事件监听器
ServletContextAttributeListener
HttpSessionAttributeListener
ServletRequestAttributeListener
request.getAttributs(); 只能通过request.setAttribute()获取参数值
request.getparameter(); 可以通过URL传参获取参数值
监听域对象中的属性的增加和删除的事件监听器
1
@init.jsp <% request.setAttribute("requestName", "requestValue"); request.getSession().setAttribute("sessionName", "sessionValue"); request.getSession().getServletContext().setAttribute("applicationName", "applicationValue"); //request.setAttribute("requestName", "requestValue");//只有这种办法可以调用request的replace。 //request.removeAttribute("requestName");//可以调用request的remove。 %> 初始化值的界面 @destory.jsp <% request.removeAttribute("requestName"); request.getSession().removeAttribute("sessionName"); request.getSession().getServletContext().removeAttribute("applicationName"); %> 销毁的界面 Ps1: request.getAttribute的值获得是从request.setAttribute的值,不能获取类似www.immoc.com/username=imooc的参数值; request.getParameter是请求的参数值,如www.immoc.com/username=imooc。 Ps2: request——request request.getSession()——session request.getSession().getServletContext()——application
1