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。

时间: 2024-10-23 00:28:44

MVC设计模式在唯品会网站中的应用的相关文章

MVC设计模式在游戏开发中的应用

一 定义 MVC即Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写. MVC是一种"前端"的设计模式. MVC的目的是:希望View和Model分离,当某一方改变时,而另一个方不必随之改变的. 例如,Java EE平台,iOS都是典型的基于MVC思想思想的,那么我们怎么在游戏设计中使用MVC模式呢. 二 MVC架构详解 1 模型Model 一直推荐一种思想:"所有的开发都是以数据位中心".在MV

Java Web开发中MVC设计模式简介

一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条理性,对于一个小型的网站这样的编写没有任何问题,但是一但我们需要编写大型的web工程的话,我们现有的编写模式会造成web应用的可扩展性较差,而且一但出现问题不能准确的定位出问题出在哪里. Java是一门应用设计模式比较广泛的语言.目前主流提出的23种设计模式均可在Java语言编写的程序中所应用.目前

Android开发中的MVC设计模式

Android开发中的MVC设计模式的理解 1. Android系统中分层的理解: (1).在Android的软件开发工作中,应用程序的开发人员主要是应用Android Application Framework层封装好的Api进行快速开发. (2).在Android框架的四个层次中,下层为上层服务,上层需要下层的支持,上层需要调用下层的服务. (3).这种分层的方式带来极大的稳定性.灵活性和可扩展性,使得不同层的开发人员可以按照规范专心特定层的开发. (4). Android的官方建议应用程序

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

MVC设计模式在网站中的应用 以淘宝的购物车为例 一.结合六个基本质量属性 可修改性 采用MVC设计模式的时候,可以将视图.模型.控制器分析,将用户动作.数据表示.应用数据分离开来,如果用户需要以不同的视图来展示,只需要修改视图中的代码即可,对于模型和控制器的代码,则不需要做改动,即可满足要求,使得对代码的修改非常方便. 易用性 用户可以直接在商品展示界面中将商品添加进购物车,直接点开购物车就可以看到已经添加的商品:删除某一件商品时,也可以直接在商品的后面点击删除,确认之后,即可删除. 安全性

iOS中MVC设计模式

在组织大型项目的代码文件时,我们常用MVC的思想.MVC的概念讲起来非常简单,就和对象(object)一样.但是理解和应用起来却非常困难.今天我们就简单总结一下MVC设计理念. MVC(Model View Controller)模型(model)-视图(view)-控制器(controller):MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.比如一批统计数据你可以分别用柱状图.

MVC设计模式((javaWEB)在数据库连接池下,实现对数据库中的数据增删改查操作)

设计功能的实现: ----没有业务层,直接由Servlet调用DAO,所以也没有事务操作,所以从DAO中直接获取connection对象 ----采用MVC设计模式 ----采用到的技术 .MVC设计模式,JSP,Servlet,POJO .数据库使用mysql .数据库连接池需要使用C3P0数据库连接池 .页面上的提示需要使用jQuery ----技术难点 .多个请求如何使用一个Servlet .如何模糊查询 .如何在创建和修改的情况下,验证用户信息是否已被使用,并给出提示 ---------

MVC设计模式(持续更新中)

MVC设计模式--->英文全称为: model(模型)  View (视图)  Controller(控制)   MVC是一种设计思想.这种思想强调实现模型(Model).视图(View)和控制器的分离.这种思想是如何作用于web的呢?实际上,我们在web开发中引入MVC思想,想要达到的目的是:实现UI层和业务逻辑层分离——控制器是为了实现上述目的而存在的! .MVC提供了让模型和视图相分离的思路——引入控制器.我们把页面跳转关系管理.表单数据的封装及验证.国际化等任务交给控制器处理.因此,也不

谈谈JAVA工程狮面试中经常遇到的面试题目------什么是MVC设计模式

作为一名java工程狮,大家肯定经历过很多面试,但每次几乎都会被问到什么是MVC设计模式,你是怎么理解MVC的类似这样的一系列关于MVC的问题. [出现频率] [关键考点] MVC的含义 MVC的结构 [考题分析] 在java Web开发中,存在两种普遍的开发模式,通常成为模式1和模式2.模式1使用JSP+JavaBean技术将页面显示和业务逻辑分开,由JSP来实现页面的显示,JavaBean对象来保存数据和实现业务逻辑.客户端直接向JSP发出请求,JSP做出相应的响应,并调用JavaBean对

关于linux asp.net MVC网站中 httpHandlers配置无效的处理方法

近期有Jexus用户反映,在Linux ASP.NET MVC网站的Web.config中添加 httpHandlers 配置用于处理自定义类型,但是在运行中并没有产生预期的效果,服务器返回了404(找不到网页)错误.经我亲自测试,在WebForm网站中,httpHandlers节点的配置是有效的,而在MVC中的确无效. 造成httpHandlers无效的原因我并没有时间去深究,为了能及时解决这个问题,我把注意力放到了Global.asax文件的Application_BeginRequest方