2006-京淘Day20

本文介绍了京淘系统中购物车的删除操作、权限实现和订单模块的详细开发过程。在权限实现部分,讨论了SpringMVC拦截器的工作原理、配置及ThreadLocal的应用。订单模块涵盖了订单表设计、创建订单项目的步骤以及订单提交和成功跳转的实现。
摘要由CSDN通过智能技术生成

1. 购物车删除操作

1.1 页面分析

在这里插入图片描述

1.2 编辑CartController

  /**
     * 购物车删除操作
     * url地址: http://www.jt.com/cart/delete/562379.html
     * 参数:    获取itemId
     * 返回值:  重定向到购物车的展现页面
     */
    @RequestMapping("/delete/{itemId}")
    public String deleteCarts(@PathVariable Long itemId){
   

        Long userId = 7L;
        cartService.deleteCarts(userId,itemId);
        return "redirect:/cart/show.html";
    }

1.3 编辑CartService

 @Override
    public void deleteCarts(Long userId, Long itemId) {
   
        QueryWrapper<Cart> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_id", userId);
        queryWrapper.eq("item_id", itemId);
        cartMapper.delete(queryWrapper);
    }

2. 京淘权限实现

2.1 业务需求

当用户进行敏感操作时,必须要求用户先登录之后才可以访问后端服务器. 例如京东商城…
使用技术:
1.AOP
2.拦截器 :拦截用户的请求
在这里插入图片描述

2.2 定义京淘拦截器

2.2.1 SpringMVC调用原理图在这里插入图片描述

2.2.2 SpringMVC拦截器工作原理

在这里插入图片描述

2.2.3 配置拦截器

@Component  //spring容器管理对象
public class UserInterceptor implements HandlerInterceptor {
   

    @Autowired
    private JedisCluster jedisCluster;

    //Spring版本升级 4 必须实现所有的方法  spring 5 只需要重写指定的方法即可.

    /**
     * 需求:   拦截/cart开头的所有的请求进行拦截.,并且校验用户是否登录.....
     * 拦截器选择: preHandler
     * 如何判断用户是否登录:  1.检查cookie信息   2.检查Redis中是否有记录.
     *          true : 请求应该放行
     *          false: 请求应该拦截 则配合重定向的语法实现页面跳转到登录页面 使得程序流转起来

     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
   
        //1.判断用户是否登录  检查cookie是否有值
        String ticket = CookieUtil.getCookieValue(request,"JT_TICKET");
        //2.校验ticket
        if(!StringUtils.isEmpty(ticket)){
   
            //3.判断redis中是否有值.
            if(jedisCluster.exists(ticket)){
   
                //4.动态获取json信息
                String userJSON = jedisCluster.get(ticket);
                User user = ObjectMapperUtil.toObj(userJSON,User.class);
                request.setAttribute("JT_USER",user);
                return true;
            }
        }
        response.sendRedirect("/user/login.html");
        return false;
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
   
        //销毁数据
        request.removeAttribute("JT_USER");
    }
}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪耀太阳

感觉文章不错的记得打赏呀

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值