码迷,mamicode.com
首页 > Web开发 > 详细

MVC设计模式在唯品会网站中的应用

时间:2017-05-01 16:10:07      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:重要   eval   ons   dao层   唯品会   跟踪   ice   request   数据库   

MVC设计模式在唯品会网站中的应用

      在刚刚过去的4.19唯品会活动中,我相信有很多人和我一样都参与了这个活动。当今社会,网上购物已经成了人们生活中不可缺少的一部分,今天让我们一起来看下MVC设计模式在唯品会网站中的应用。

      我们平时在唯品会网站购物的时候,点击商品页面的加入购物车图标,然后商品就直接加入到购物车列表中,不管用户是否登录。然后我们换了一台设备,发现该网站我们之前在另一台设备上加入购物车的商品不存在。由此可以推断出:购物车列表的内容不是存放在数据库,而是在cookie中。所以购物车功能实现是在客户端实现的。购物车的功能有:展示购物车列表、向购物车列表中添加商品(add)、修改购物车列表中商品的数量、删除列表中的商品。

     在展示购物车列表功能中,因为购物车的商品列表是保存在cookie中的,所以获取购物车列表就是从cookie中获取商品列表。首先cookie中保存形式也是key-value的形式,key指的是保存的名称,比如TT_CART,是一个标志而已。value是保存的商品的具体信息,是以字符串的形式保存的,通常将列表的形式转换成json格式的数据,因为json格式的就是一个字符串的形式保存的。cookie属于会话跟踪技术,写入cookie是服务器的response写入的,即服务器给客户端颁发一个名词cookie。所以获取cookie就需要使用request来获取。 

     service层实现:

       // 从cookie中获取购物车列表

       private List<CartItem> getItemListByCookie(HttpServletRequest request)

       {

              String cookiejson = CookieUtils.getCookieValue(request,"TT_CART",true);

        //转换成商品列表

              if(cookiejson==null)

              {

                     return new ArrrayList<>();

              }

              //cookie中保存的也是key-value的值;value是字符串,即json格式的数据

              List<CartItem>list=JsonUtils.jsonToList(cookiejson,CartItem.class);

              return list;

       }

      获取到商品的列表后,controller层实现展示该列表:

       //显示购物车列表

       @RequestMapping("/cart")

       public String showCart(HttpServletRequest request,Model model)

       {

       List<CartItem>showCartList=carService.showCartList(request);

       Model.addAttribute("cartList",showCartList);

       return "cart";

       }

      在向购物车添加商品时,首先判断购物车列表中是否存在该商品,如果存在则将该商品的数量加1,如果不存在则将商品加入购物车,重新将商品列表写入cookie。在这个功能模块中没有涉及dao层。service层:因为之前显示了购物车列表,所以需要遍历购物车列表,判断购物车中商品的id和加入的商品的id是否一致,如果一致则数量加1,如果不一致则需要从商品信息表中获取该上商品的信息。这里需要调用服务层的根据id获取商品信息的接口,即用httpclient。

      在唯品会网站中,商品加入到购物车之后,显示购物车的商品列表,点击结算,然后到了未提交前的订单列表,点击提交订单后,生成此订单,返回订单的订单号,付款金额,订单预计到达时间。这对于唯品会网站是一个十分重要的功能,其移动端和PC端都需要该功能,所以这里将订单系统单独作为一个服务来,留出接口供客户单来调用。controller需要将对象传递给service层,controller接收的参数是一个json格式的字符串,也就是说客户端传递过来的是json格式的字符串。这涉及到了springMVC是如何接收json字符串的,需要用到@RequestBody注解。@ResponseBody注解的原理是response只能响应一个字符串,当我们的返回值是java对象的时候,它有一个默认行为,即利用jackson包将java对象转为字符串响应。这是一个默认自动的行为,不需要人为设置,只要这个注解即可。@RequestBody注解同理:利用这个注解告诉springMVC现在接收的是一个json字符串,需要采取默认行为利用jackson包将json字符串转换为java对象,所以controller层需要一个java对象的pojo。

MVC设计模式在唯品会网站中的应用

标签:重要   eval   ons   dao层   唯品会   跟踪   ice   request   数据库   

原文地址:http://www.cnblogs.com/niujunyan/p/6791988.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!