什么是MVC框架?
(1) 视图层:
首先,JSP页面(视图层)的js函数中使用ajax技术进行传值,将URL赋值为对应的action,调用action中的方法,即通过hibernate(模型层)获取数据库数据。将收到的数据显示在JSP页面。
实现MVC思想中:发送用户动作(例如按钮点击)到控制器,并可以处理很多不同的视图。
(2) 控制层
当JSP页面提交了用户需求,交给控制器去处理,控制器需要从模型中找到对应的数据,并返回到JSP页面。
实现MVC思想中:接受用户的输入,解释用户的行为,并提供模型数据至视图。消除模型与视图依赖关系。
(3) 模型层
模型层中含有数据库的全部数据,并且定义了相应的方法去调用,当控制层调用这些方法时,像控制层传递这些数据。
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";
}