Session:
就是一个接口,一个会话用来维护一个客户端和服务器之前关联的一种技术
每个客户端都有自己的一个Session会话,Session会话经常用来把偶才能用户登录之后的信息
如何创建和获取Session:
request.getSession()
第一次调用是创建Session会话,之后调用都是获取前面创建好的Session会话对象
isNew():判断到底是不是刚创建出来的(新的)
每个会话都有一个ID值,而且这个ID是唯一的
getId()得到Session会话的ID
public class createGetSession extends BaseServlet{
protected void createOrGetSession(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//创建和获取Session会话对象
HttpSession session = req.getSession();
//判断当前Session会话,是否是新创建出来的
boolean isNew = session.isNew();
//获取Session会话的唯一标识
String id = session.getId();
resp.getWriter().write("得到的Session它的id是" + id );
resp.getWriter().write("这个Session是否是新创建的" + isNew);
}
Session域中数据的存取:
protected void setAttribute(HttpServletRequest req, HttpServletResponse resp) throws IOException {
req.getSession().setAttribute("key1","value1");
System.out.println("已经往Session中保存了数据");
}
protected void getAttribute(HttpServletRequest req, HttpServletResponse resp) throws IOException {
Object attr = req.getSession().getAttribute("key1");
resp.getWriter().write("从Session中获取出key1的数据是:" + attr);
}
Session生命周期控制:
public void setMaxinactiveInterval(int interval) 设置Session的超时时间,超过指定的时长,Session就会被销毁
值为正数的时候,设定Session的超时时长
负数表示永不超时(极少使用)
public int getMaxinactivalInterval() 获取Session的超时时间
public void invalidate() 让当前Session会话马上超时无效
protected void defaultLife(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//获取了Session的默认超时时长
int maxInactiveInterval = req.getSession().getMaxInactiveInterval();
resp.getWriter().write("Session的默认超时时长为:" + maxInactiveInterval + "秒");
}
Session的默认超时时长是半个小时
表示当前web工程创建出来的所有Session默认是20分钟 超时时长
<session-config>
<session-timeout>20</session-timeout>
</session-config>
设置单个Session的超时时间
protected void life3(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// 先获取Session对象
HttpSession session = req.getSession();
// 设置当前Session3秒后超时
session.setMaxInactiveInterval(3);
resp.getWriter().write("当前Session已经设置为3秒后超时");
}
Session的超时指的是,客户端两次请求的最大间隔时长
浏览器和Session之间的关联的技术内幕:
session技术,底层是基于Cookie技术来实现的