网上书城之购物车拦截器、购物车的逐步完善

本文介绍了网上书城项目中购物车的拦截器使用,包括未登录用户的限制,以及购物车的删除、更新、清空和继续购物等功能的详细实现。通过示例代码展示了如何实现购物车的各个操作,并给出了操作前后的效果对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

今天为大家分享的知识点是网上书城项目的购物车拦截器的使用以及购物车其他功能的逐步完善!

购物车上的传送门:购物车的初步实现

购物车拦截器

原因:购物车的所有操作都需要拦截器

例如:加入购物车、清空、继续购买、结算、更新、删除!

如果用户未登录,则不能将购物车商品放application中,并且对于大多数网站而言,购买商品都需要先登录!

使用拦截器通常有两种方式,

1、定义一个数组,将需要被拦截的放在里面,再进行判断

String  excludes []={
   "shopping","xxx"};

2、定义一个数组,将不需要未拦截的放在里面,再进行判断

String  includes []={
   "book","categroy","xxx"...};

代码实现

ShoppingFilter类

package com.wangqiuping.Filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.wangqiuping.entity.User;

/**
 * 除去login.jsp、register.jsp、index.jsp、、/static/*、/user.action
 */
@WebFilter(filterName = "urlFiter",urlPatterns = "/*")
public class ShoppingFilter implements Filter {
   

    public ShoppingFilter(){
   
        super();
    }

//    只要以下urls是不需要session的
    private boolean validateUrl(String uri){
   
        boolean flag  = true;
        String[] urls = new String[]{
   "login.jsp","register.jsp","ndex.jsp","static","user.action","category.action","book.action"};
        for (String url : urls) {
   
            if (uri.contains(url)){
   
                flag = false;
                break;
            }
        }
        return flag;
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
   
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse resp = (HttpServletResponse) response;

//        这些请求路径之外都要登录后才能访问
        String uri = req.getRequestURI();
        if((!"/".equals(uri)) && validateUrl(uri)) {
   
            ;String methodName = req.getParameter("methodName");
//            if ("add".equals(methodName) || "pay".equals(methodName) || "list".equals(methodName)){
   
                User user = (User) req.getSession().getAttribute("currentUser");
                if(user == null){
   
                    resp.sendRedirect("/login.jsp");
                    return;
                }
//            }
        }

        chain.doFilter(request, response);
    }

    public void destroy() {
   

    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
   

    }
}

如果用户为空,则返回到登录界面,反之,则进行放行的操作

jsp页面必须引入的样式

<!-- 写全局样式 -->
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/static/js/jquery-easyui-1.5.1/themes/default/easyui.css">   
<!-- 定义图标的样式 -->
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/static/js/jquery-easyui-1.5.1/themes/icon.css">   
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值