1.用户认证:管理用户权限和角色信息
1.1用户登录请求
1.2验证用户凭证
- 接收到登录请求后,服务器需要验证用户提供的用户名和密码。
- 这通常涉及到查询数据库,检查用户名是否存在,以及密码是否匹配。
1.3创建Session
- 一旦用户凭证验证成功,服务器创建一个新的
HttpSession
对象(如果尚未存在)来跟踪用户的会话。
1.4存储用户信息
- 在Session中存储用户的身份信息,如用户ID或用户名。这可以通过调用
setAttribute
方法实现:
HttpSession session = request.getSession();
session.setAttribute("userId", userId);
session.setAttribute("username", username);
1.5管理用户权限和角色
- 除了用户ID或用户名,还可以在Session中存储用户的权限和角色信息:
session.setAttribute("roles", userRoles); // userRoles可能是一个字符串数组或列表
session.setAttribute("permissions", userPermissions);
1.6设置Session超时
- 根据需要设置Session的超时时间,以自动登出不活跃的用户:
session.setMaxInactiveInterval(30); // 设置Session超时为30分钟
1.7重定向或转发到受保护的页面
- 用户登录成功后,通常会重定向或转发到受保护的页面:
response.sendRedirect("dashboard.jsp");
1.8访问控制
- 对于需要认证的页面,首先检查Session中是否存在用户信息:
HttpSession session = request.getSession(false);
if (session == null || session.getAttribute("userId") == null) {
response.sendRedirect("login.jsp"); // 用户未认证,重定向到登录页面
return;
}
1.9用户注销
- 提供用户注销功能,从Session中清除用户信息,并使Session失效:
session.removeAttribute("userId");
session.removeAttribute("username");
session.removeAttribute("roles");
session.invalidate(); // 结束会话
response.sendRedirect("login.jsp"); // 重定向到登录页面
2.购物车管理
2.1定义购物车模型
- 首先,需要定义一个购物车模型,通常包含商品列表和用户选择的数量。
public class ShoppingCart {
private Map<String, Integer> items; // 商品ID到数量的映射
public ShoppingCart() {
items = new HashMap<>();
}
public void addItem(String itemId, int quantity) {
items.put(itemId, items.getOrDefault(itemId, 0) + quantity);
}
public void removeItem(String itemId) {
items.remove(itemId);
}
public int getItemQuantity(String itemId) {
return items.getOrDefault(itemId, 0);
}
public Map<String, Integer> getItems() {
return items;
}
}
2.2存储购物车到Session
- 当用户添加商品到购物车时,将购物车对象存储到
HttpSession
中。
HttpSession session = request.getSession();
ShoppingCart cart = (ShoppingCart) session.getAttribute("cart");
if (cart == null) {
cart = new ShoppingCart();
session.setAttribute("cart", cart);
}
String itemId = ...; // 商品ID
int quantity = ...; // 用户选择的数量
cart.addItem(itemId, quantity);
2.3显示购物车内容
- 当用户请求查看购物车时,从Session中获取购物车对象,并显示其内容。
HttpSession session = request.getSession();
ShoppingCart cart = (ShoppingCart) session.getAttribute("cart");
if (cart != null) {
Map<String, Integer> items = cart.getItems();
// 遍历items并显示每个商品的ID和数量
}
2.4更新购物车
- 用户可能会更改购物车中商品的数量,需要提供更新逻辑。
String itemId = ...;
int quantity = ...;
ShoppingCart cart = (ShoppingCart) session.getAttribute("cart");
if (cart != null) {
cart.addItem(itemId, quantity); // 增加数量或添加新商品
}
2.5从购物车中移除商品
String itemId = ...;
ShoppingCart cart = (ShoppingCart) session.getAttribute("cart");
if (cart != null) {
cart.removeItem(itemId); // 从购物车中移除商品
}
2.6清空购物车
HttpSession session = request.getSession();
ShoppingCart cart = new ShoppingCart(); // 创建一个新的空购物车
session.setAttribute("cart", cart);
2.7跟踪用户的购买历史
- 可以在用户完成购买后,将购物车中的商品信息存储到数据库中,以跟踪购买历史。
// 假设有一个方法savePurchaseHistory记录购买历史
savePurchaseHistory(cart.getItems());
2.8考虑Session的生命周期
- 由于购物车依赖于Session,需要考虑Session的生命周期和超时设置。
session.setMaxInactiveInterval(30); // 设置Session超时为30分钟
本期关于session对象的分享就结束啦,咱们下期再见~