定义
Session就是一个接口(HttpSession)
Session就是会话,它是用来维护一个客户端和服务器之间关联的一种技术
每个客户端都有自己的一个Session会话
Session会话中,我们经常用来保存用户登录之后的信息
创建Session和获取
创建和获取Session,他们的API是一样的
request.getSession()
第一次调用:创建Session会话
之后调用都是:获取前面创建好的Session会话对象
isNew():判断到底是不是刚创建出来的
true:表示刚创建
false:获取之前创建的
每个会话都有一个身份号码,即ID值,且每个ID值唯一
package com.test01.javaweb01.session;
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;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
@WebServlet(
value = "/sessionTest01",
loadOnStartup = 1)
public class SessionTest01 extends HttpServlet {
// 存东西
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
// getSession(req, resp);
}
// 获得Session对象
protected void getSession(HttpServletRequest req,HttpServletResponse resp) throws UnsupportedEncodingException {
// 解决乱码问题
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");
HttpSession session = req.getSession();
Person person =(Person) session.getAttribute("person01");
System.out.println(person.toString());
}
// 注销session的东西和注销session
protected void removeSession(HttpServletRequest req,HttpServletResponse resp) throws UnsupportedEncodingException {
// 解决乱码问题
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");
HttpSession session = req.getSession();
session.removeAttribute("People01");
// 手动注销session
session.invalidate();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 解决乱码问题
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=utf-8");
// 得到Session
HttpSession session = req.getSession();
session.setMaxInactiveInterval(300);
// 给Session中存东西
session.setAttribute("person01",new Person("People01",1));
// 获取Session中的ID
String sessionId = session.getId();
// 判断Session是不是新创建的
if (session.isNew()){
resp.getWriter().write("session创建成功,ID:"+sessionId);
}else {
resp.getWriter().write("session已经服务器中存在了,ID:" + sessionId);
}
Person person =(Person) session.getAttribute("person01");
System.out.println(person.toString());
resp.getWriter().write("People对象是:"+person);
}
}
配置会话自动过期:客户端两次请求的最大间隔时长。
<!-- 设置session默认的失效时间-->
<session-config>
<!-- 15分钟之后自动失效,以分钟为单位-->
<session-timeout>15</session-timeout>
</session-config>