监听状态
接口:javax.servlet.http.HttpSessionListener
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
//创建session
req.getSession();
System.out.println("访问了servlet方法");
}
package com.biubiu.listener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListener implements HttpSessionListener{
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("创建了session对象:"+se.getSession().getId());
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("销毁了session对象:"+se.getSession().getId());
}
}
<listener>
<listener-class>com.biubiu.listener.SessionListener</listener-class>
</listener>
属性监听
package com.biubiu.listener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
public class SessionAttributeListener implements HttpSessionAttributeListener{
@Override
public void attributeAdded(HttpSessionBindingEvent event) {
System.out.println("session增加的属性"+event.getName()+":"+event.getValue());
}
@Override
public void attributeRemoved(HttpSessionBindingEvent event) {
System.out.println("session删除的属性"+event.getName()+":"+event.getValue());
}
@Override
public void attributeReplaced(HttpSessionBindingEvent event) {
System.out.println("session替换的属性"+event.getName()+":"+event.getValue());
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
//创建session
HttpSession session = req.getSession();
session.setAttribute("name", "jack");
session.setAttribute("name", "李四");
session.removeAttribute("name");
}
<listener>
<listener-class>com.biubiu.listener.SessionAttributeListener</listener-class>
</listener>
问题:在访问jsp页面的为什么会触发sessionCreate方法
在访问JSP页面时候会将jsp页面转换成一个特殊的Servlet,先将其转换成为对应的.*java掩码,之后将原码编译成对应的class文件,之后返回给浏览器之前被解释为html代码给浏览器解析。