监听器
Web的组件,可以对某个时间进行监控,当该时间发生时,有web容器自动的去调用响应事件.
监听器的分类:
可以监听request,session,servletcontext创建和销毁;
ServletRequestListener,
HttpSessionListener,
ServletContextListener,
可以监听request,session,servletcontext数据的新增,删除和修改
ServletRequestAttributeListener,
HttpSessionAttributeListener,
ServletContextAttributeListener,
监听器的开发流程:
1.创建一个类
2.实现需要监听的事件的对应的接口,实现对应的方法
3.在方法中完成响应事件的代码
4.配置监听器(xml/注解)
代码:
SessionListener.java:
package text.web.listener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@WebListener
public class SessionListener implements HttpSessionListener,HttpSessionAttributeListener{
public void sessionCreated(HttpSessionEvent se) {
System.out.println("session被创建了...");
}
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("session被销毁了...");
}
public void attributeAdded(HttpSessionBindingEvent event) {
System.out.println("session添加了属性值,添加了"+event.getName());
}
public void attributeRemoved(HttpSessionBindingEvent event) {
System.out.println("session移除了属性值,移除了"+event.getName());
}
public void attributeReplaced(HttpSessionBindingEvent event) {
System.out.println("session替换了属性值");
}
}
SessionServlet.java:
package text.web.listener;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/session")
public class SessionServlet extends HttpServlet {
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//创建session
HttpSession session = req.getSession();
//添加属性
session.setAttribute("username", "rose");
session.setAttribute("password", "123");
//替换属性
session.setAttribute("username", "jack");
//销毁session
session.invalidate();
}
}