百度搜到有使用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數據就可以了。