百度搜到有使用servlet使用Cookie实现购物车功能的,下面说一下 “SpringMVC使用Cookie实现购物车功能”
我觉得这是理所当然SpringMVC会有封装Cookie,因为自然。。。
一、先看Controller的“增加到购物车”方法:
@RequestMapping(value = "addPdt2Cart") public void addPdt2Cart( @CookieValue(value = "cartCookie",required = false) String cartCookieStr , @RequestParam(value = "pdtId") String pdtId , HttpServletResponse response, CartDedail cartRecord , Cart cart) { cartRecord.setPdtId(pdtId); if (cartCookieStr == null ) { cart.getCartRecords().add(cartRecord); }else{ JSONObject jsonCart = JSONObject.fromObject(cartCookieStr); cart = (Cart) JSONObject.toBean(jsonCart,Cart.class); // Json转换成对象Cart cart.getCartRecords().add(cartRecord); } String cartCookie = JSONObject.fromObject(cart).toString();//Cart转换成对象Json Cookie cookie = new Cookie("cartCookie",cartCookie); cookie.setMaxAge(60*60*24*7);//保留7天 response.addCookie(cookie); }
主要使用到@CookieValue 这个注解 ,绑定请求的一个cookie。用到它两个属性
1. value :cookie的名字
2. required 这个boolean类型的,指明是否为必须,默认是true,所以请求里没有指定的cookie会报异常,要设为false.
毕竟第一次增加到购物车时是没有指定那个cookie的。
3. 把cookie添加到response里面;如果方法类型是Cookie,SpringMVC自动帮你加到response里,前提是之前要有那个cookie,找不到则绑定不了。
4. 可以自己解释接受到的cookie的json数据,这里我用Json-lib 的jar包,可以把它转换成对象;
Json-lib 的依赖包在Maven Pom.xml的配置如下:
<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>
二、查看购车
也是一样,@CookieValue get到cookie后解析json数据就可以了。