Servlet
监听器
- 监听器的类型
ServletContextListener 监听web应用(ServletContext)对象的创建和销毁
ServletContextAttributeListener 监听web应用(ServletContext)对象的属性
HttpSessionListener 监听session对象的创建和销毁
HttpSessionAttributeListener 监听session对象的属性
ServletRequestListener 监听request对象的创建和销毁
ServletRequestAttributeListener 监听request对象的属性
HttpSessionActivationListener 服务器暂时性的停止时,把session里存储的对象暂时存到硬盘上(钝化),把硬盘上的数据恢复为对象(活化)
HttpSessionBindingListener 属性绑定与解除绑定,当把对象存储到session中时,调用属性绑定方法,当session失效或者把该对象从session中移除时,调用解除绑定方法 - 前六种监听器的使用
以前两种(ServletContext相关)举例
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<listener>
<listener-class>com.java.listener.MyListener</listener-class>
</listener>
</web-app>
public class MyListener implements ServletContextListener {
public MyListener() {
}
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("contextDestroyed");
}
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("contextInitialized");
}
}
@WebListener
public class MyAttrListener implements ServletContextAttributeListener {
public MyAttrListener() {
}
public void attributeAdded(ServletContextAttributeEvent arg0) {
System.out.println("attributeAdded");
}
public void attributeRemoved(ServletContextAttributeEvent arg0) {
System.out.println("attributeRemoved");
}
public void attributeReplaced(ServletContextAttributeEvent arg0) {
System.out.println("attributeReplaced");
}
}
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException ,IOException {
ServletContext sc = this.getServletContext();
System.out.println("----------------添加属性-----------------");
sc.setAttribute("name", "admin1");
System.out.println("----------------修改属性-----------------");
sc.setAttribute("name", "admin2");
System.out.println("----------------删除属性-----------------");
sc.removeAttribute("name");
}
}
- HttpSessionActivationListener使用
public class Student implements Serializable, HttpSessionActivationListener{
private String name;
public Student() {
super();
}
public Student(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void sessionDidActivate(HttpSessionEvent se) {
System.out.println("sessionDidActivate");
}
@Override
public void sessionWillPassivate(HttpSessionEvent se) {
System.out.println("sessionWillPassivate");
}
}
@WebServlet("/SetSessionServlet")
public class SetSessionServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException ,IOException {
req.getSession().setAttribute("stu", new Student("admin"));
}
}
@WebServlet("/GetSessionServlet")
public class GetSessionServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException ,IOException {
Student stu = (Student)req.getSession().getAttribute("stu");
System.out.println(stu.getName());
}
}
- HttpSessionBindingListener使用
public class Person implements Serializable, HttpSessionBindingListener{
private String name;
public Person() {
super();
}
public Person(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void valueBound(HttpSessionBindingEvent event) {
System.out.println("valueBound");
}
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
System.out.println("valueUnbound");
}
}
@WebServlet("/BindSessionServlet")
public class BindSessionServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException ,IOException {
req.getSession().setAttribute("person", new Person("admin"));
req.getSession().invalidate();
}
}