EverydayOneCat
「Aerodynamic Baking Marshmallows!」科学地烤棉花糖
Marshmallow is ⓁⓄⓋⒺ
购物车
用户在商品详细页点击加入购物车,提交商品SKU编号和购买数量,添加到购物车。购物车展示页面如下:
1.实现思路
购物车数据的存储结构如下:
当用户在未登录的情况下,将此购物车存入cookies , 在用户登陆的情况下,将购物车数据存入redis 。如果用户登陆时,cookies中存在购物车,需要将cookies的购物车合并到redis中存储.
创建购物车实体类
1 | public class Cart implements Serializable{ |
2.Cookie存储购物车
2.1服务层
1 | /** |
2.2控制层
1 |
|
3.前端逻辑
合计数
1 | //求合计 |
4.Redis存储购物车
判断当前用户是否登陆,如果未登录采用Cookie存储,如果登录则采用Redis存储。登录后要进行Cookie购物车与Redis购物车的合并操作,并清除Cookie购物车。
4.1获取当前登录人账号
spring-security.xml 更改配置:
去掉
1 | <http pattern=*"/cart/\*.do"* security=*"none"*></http> |
添加
1 | <intercept-url pattern="/cart/*.do" access="IS_AUTHENTICATED_ANONYMOUSLY"/> |
access=”IS_AUTHENTICATED_ANONYMOUSLY” 用于设置资源可以在不登陆时可以访问。否则我们调用控制层方法获取用户名会报错。
此配置与 security=”none”的区别在于当用户未登陆时获取登陆人账号的值为anonymousUser ,而security=”none”的话,无论是否登陆都不能获取登录人账号的值。
代码实现:
1 | //得到登陆人账号,判断当前是否有人登陆 |
当用户未登陆时,username的值为anonymousUser
4.2服务层
1 |
|
4.3跳板页
新建login.html ,页面添加脚本
1 | <script type="text/javascript"> |
购物车页面链接到跳板页
1 | 请<a href="login.html">登录</a> |
点击登录按钮,会由Spring-security拦截进入CAS登录页,登陆后跳转到login.html,再由login.html跳转到cart.html
4.4控制层
1 | /** |
结语
叫我水王,这篇完全没有新知识,就当老知识的复习吧😉