思路:session中记录登录用户、购物车。再把sessionId加进cookie中。当程序判断是否登录时,会首先从session中取购物车对象,如果取不到,再通过cookie取出sessionId,再根据这个sessionId取出session。因而问题的关键在于如何保存session,当然最好的的方式是通过监听器来保存,代码如下:
package com.asm.base.listener;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class WebSessionListener implements HttpSessionListener {
private static Map<String, HttpSession> sessions = new LinkedHashMap<String, HttpSession>();
@Override
public void sessionCreated(HttpSessionEvent sessionEvent) {
System.out.println("创建" + sessionEvent.getSession().getId());
sessions.put(sessionEvent.getSession().getId(), sessionEvent.getSession());
}
@Override
public void sessionDestroyed(HttpSessionEvent sessionEvent) {
System.out.println("销毁" + sessionEvent.getSession().getId());
sessions.remove(sessionEvent.getSession().getId());
}
public static HttpSession getSession(String sessionId) {
return sessions.get(sessionId);
}
public static void remove(String sessionId) {
if (sessions.containsKey(sessionId)) {
sessions.remove(sessionId);
}
}
}
过滤器判断是否登录的代码如下:
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
Employee employee = (Employee) WebUtil.getlogonEmp(request); // 首先从当前session中获取
if (employee == null) {// 如果仍为空,然后再从cookie中获取
HttpSession session = WebSessionListener.getSession(WebUtil.getCookieByName(request,"sid"));
if (session != null) {
employee = (Employee) session.getAttribute("employee");
}
if (employee != null) {
request.getSession().setAttribute("employee", employee);
// 如果employee不为空,则把此对象加进当前session中
}
if (employee == null) {
request.setAttribute("message", "登录后便可进入管理页面");
request.getRequestDispatcher("logo.jsp").forward(request, response);
return;// 这里必须return 直接返回到登录页面
}
}
chain.doFilter(request, response);
}
登录时的关键代码:把登录对象加进session中,并把此session加进cookie中
request.getSession().setAttribute("employee", emp对象);
// 加进session
WebUtil.addCookie(response, "sid", request.getSession().getId(), request.getSession().getMaxInactiveInterval());
addCookie 方法的代码如下:
public static void addCookie(HttpServletResponse response, String name, String value, int maxAge) {
Cookie cookie = new Cookie(name, value);
cookie.setPath("/");
if (maxAge > 0)
cookie.setMaxAge(maxAge);
response.addCookie(cookie);
}
分享到:
相关推荐
解决因浏览器关闭导致购物车数据丢失问题。。。。。。。。
这是用JPA框架实现的,下面只有购物车的一些简单的实现。一直在更新中。。。。。。。。。。。。。
该系统实现了网上购物的用户注册、登录、修改信息、商品展示、购物车操作。使用jsp+servlet+mysql,使用JQuery来控制页面。
用户登录、注册、管理员登陆、显示商品、添加到购物车功能。
html5弹出窗口点击购物车弹出商品清单列表代码 html5弹出窗口点击购物车弹出商品清单列表代码
购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车
本博主的资源全免积分下载,如有需积分的,可联系索要。 1、店铺、商品的全选、取消触发全局的全选按钮 2、到达指定位置,结算条悬浮于浏览器底部
html5弹出窗口制作商城网站点击购物车动画弹出商品清单列表代码
首先需要在IIS里建立网站,主机头设置为:“demo.svnhost.cn”,然后用记事本打开“C:\WINDOWS\system32\drivers\etc\hosts”文件,在最后加入:“127.0.0.1 demo.svnhost.cn”,然后新开一个浏览器窗口,输入...
使用.net开发 使用ASPNET技术 实现了购物车、用户权限组管理、匿名用户登录
购物车以及登录示例购物车
asp.net购物车 .net购物车 C#购物车 net通用购物车 asp通用购物车 asp.net购物车 .net购物车 C#购物车 net通用购物车 asp通用购物车 asp.net购物车 .net购物车 C#购物车 net通用购物车 asp通用购物车
购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车购物车
cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车cookie购物车
Android实现一个简易版本的购物车小案例。 (1)主要功能 1、用户注册、用户登录。 2、商品、购物车列表 (2)android 1、ViewPager2 + Fragment实现页面的切换。 2、SQLite数据库、基础组件的使用。 3、shape和...
(2)用户登录后才能进入后台,否则无法对后台进行操作。 (3)首页面中,单击该页面下“进入后台”超链接,进入后台主页面。 单击“继续购物”导航按钮,继续购买商品。 (4)单击“结账”导航按钮,对当前购物车中...
SESSION购物车SESSION购物车SESSION购物车SESSION购物车SESSION购物车SESSION购物车SESSION购物车
c# 实现购物车功能 实例代码(非常入门)
购物车登录注册页面
常见面试题:购物车实现过程,例如:分析了购物车跟用户的关系,跟购物车有关的操作