JavaWeb Session的使用
关于Cookie的详细信息,可以看一下这篇文章—— 转载:https://blog.****.net/rubulai/article/details/91873075
Session技术,依赖于Cookie
简述一下Cookie和Session的区别:
- Cookie是把用户的数据写给用户的浏览器,浏览器保存
- Session把用户的数据写到用户独占的Session中,服务器端保存(保存重要的信息,减少服务器资源的浪费)
Session标识传递的流程图:
Session目前支持的方法
方法 | 返回值 | 作用 |
getCreateTime(): |
long |
获取创建时间 |
getID(): |
String |
获取id |
getLastAccessedTime(): |
long |
获取最后一次访问时间 |
getServletContext(): |
ServletContext |
ServletContext对象 |
setMaxInactiveInterval(int): |
void |
设置最大时间 |
getMaxInactiveInterval(): |
int |
获取最大时间 |
getAttribute(String): |
Object |
获取节点 |
getAttributeNames(): |
Enumeration<String> |
获取节点名称 |
setAttribute(String, Object): |
void |
设置节点 |
removeAttribute(String): |
void |
移除节点 |
invalidate(): |
void |
注销 |
isNew(): |
boolean |
是否新 |
常用的方法
1、通过request请求获取Session对象
HttpSession session = request.getSession();
2、必须以键值对的形式往Session存储数据
session.setAttribute("username", "广涛");
3、获取、删除Session
session.getAttribute("username") // 获取数据 session.removeAttribute("username"); // 删除数据
4、获取Session的id
String sessionId = session.getId();
5、判断Session是否为新创建
if (session.isNew()) { resp.getWriter().write("session创建成功,ID:" + sessionId); } else { resp.getWriter().write("session已经在服务器中存在了,ID:" + sessionId); }
使用session:
package com.guangtao; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; public class sessionDemo1 extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 解决乱码问题 req.setCharacterEncoding("GBK"); resp.setCharacterEncoding("GBK");
HttpSession session = req.getSession(); session.setAttribute("username", "广涛"); String sessionId = session.getId(); if (session.isNew()){ resp.getWriter().write("session创建成功,ID:" + sessionId); }else { resp.getWriter().write("session已经在服务器中存在了,ID:" + sessionId); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
设置Session的有效期: 使用HttpSession的invalidate方法来设置失效时间
session.setMaxInactiveInterval(24*60*60); // 单位为秒