会话跟踪
为什么要会话跟踪
http(无状态)
什么会话 session
客户端 和服务器一次交互
什么是会话跟踪
确定多次会话是不是同一个客户对象
会话跟踪技术有哪些
Servlet实现
1.可以实现javax.servlet.Servlet接口
2.可以继承javax.servlet.GenericServlet类(重写service方法)
3.可以继承javax.servlet.http.HttpServlet类
a.可以重写service方法(优先)
b.可以重写doGet/doPost方法
Session操作
//1.创建session
HttpSession session = request.getSession();
//这是加入没有一个session那么就会创建一个session,如果有session就会返回这个session
HttpSession session = request.getSession(true);
//这是如果有session就会返回session如果没有就会返回一个null
HttpSession session = request.getSession(false);
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/*
* 四大作用域对象
* pageContext(页面级) 只能是一个页面
* HttpServletRequest/request(请求级) 可以多个页面(转发)
* HttpSession/session(会话级) 可以多个页面(同一个客户)
* ServletContext/application(应用程序级,一个工程只有一个,所有客户共享)
*
*
*/
public class ShopServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//输出流
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//1.创建session
HttpSession session = request.getSession();
out.println("sessionId:"+session.getId());
//2.是否是新会话
out.println("<br>新旧:"+session.isNew());
out.print("我爱你");
request.setAttribute("name", "张三");
//有效时间 负数(一直有效) 0立即无效 正数(秒)
//session.setMaxInactiveInterval(-2);
//4.销毁session
//session.invalidate();
//3.超时时间(seconds)
out.print("<br>超时时间:"+session.getMaxInactiveInterval()+"秒");
}
}