本文共 3252 字,大约阅读时间需要 10 分钟。
服务器会给每一个用户 创建一个Session对象
一个Session独占一个浏览器 只要浏览器不关闭 这个Session就一直存在 一个网站登录后 该网站的子页面可以直接访问 并且子页面中会保存用户的信息Cookie是把用户的数据写给用户的浏览器
在用户的浏览器保存(可以保存多个)Session是把用户的信息写到用户独占的session域中
服务器端保存(存重要信息,避免服务器端资源浪费) Session由服务器端创建Cookie中setAttribute( String name, String value) 只能存入String类型
Session中setAttribute( String name, Object value) 可以存入 Object类型保存用户登录信息
比如 B站 我们登录之后 每次进入无需重新登录Cookie把资源存在本地 每次由用户向服务器端发送
Session把资源存在服务器端 只给了用户身份铭牌 根据这张铭牌 获取资源
该类常用方法
创建Servlet类public class Session extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf8"); resp.setCharacterEncoding("utf8"); resp.setContentType("text/html;charset=utf8"); PrintWriter out = resp.getWriter(); HttpSession session = req.getSession(); if(session.isNew()){ out.write("新创建的Session id为:"+session.getId()); }else{ out.write("之前的Session id为:"+session.getId()); } session.setAttribute("name","潮汕奴仔"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }}
在web.xml注册此servlet
Session com.csnz.servlet.Session Session /setSession
启动服务器 访问
新建Servlet——GetSession类public class GetSession extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf8"); resp.setCharacterEncoding("utf8"); resp.setContentType("text/html;charset=utf8"); PrintWriter out = resp.getWriter(); HttpSession session = req.getSession(); String name = (String) session.getAttribute("name"); out.write(name); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }}
注册Servlet
GetSession com.csnz.servlet.GetSession GetSession /GetSession
启动服务器 先访问GetSession
因为没有set直接get 服务器会报500 显示空指针异常 先访问set 再访问get 手动写 注销Session类public class SessionOut extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { HttpSession session = req.getSession(); session.removeAttribute("name"); session.invalidate(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); }}
注册Servlet
SessionOut com.csnz.servlet.SessionOut SessionOut /SessionOut
访问此注销页面
进行get 同样 我们可以使用在web.xml中配置Session失效的时间来控制Session的作用域1
启动服务器访问set
一分钟后刷新get页面转载地址:http://ilclf.baihongyu.com/