主页HomePage
商品详情页
购物车页面
一:自己完成功能
1 购物车功能实现:
(1)功能要求:
- 当在主页未登录点击主页购物车时,页面会自动跳到登录页面,进行登录
- 当未登录进入商品详情页时,是不能加入购物车的,会提示先登录,也不能进入购物车页面
(2)实现原理:
- 主页面部分内容为动态加载,当直接访问HomePage.jsp是不会出现完整的页面的,所以是直接访问servlet的,当点击图片,例如轮播图,在链接servlet的同时,我也将商品所在数据库中对应的id给传到servlet了,例如:(href=”../Servlet?id=44”),在servlet中我将根据id查找数据库所对应的内容,动态加载到商品详情页中。
-部分实现代码如下:
Goods good = ServiceImplFactory.getDao("Goods").findGoods(img_id);
request.setAttribute("Goods", good);
request.getRequestDispatcher("shoppingExample.jsp").forward(request, response);
商品详情页面通过jsp的EL表达式获取
(3)点击加入购物车时,用Ajax来实现,因为加入购物车后会返回一条信息,已加入购物车,来提醒顾客。传对应商品id和数量给servlet
$(function () {
$(".button1").click(function(){
$.get("addShopCartServlet?id=${Goods.id}",
{'count':$(".input2").val()},
function(data,textStatus){
$(".content").html(data);
},"html");
});
});
当未登录点击加入购物车时,要提示先登录,我在servlet中获取登录的session中的用户名,以是否为空判断,因为登录成功用户信息是保存在session中的,然后就是根据id获取商品表中的信息,存到对应的购物车表中去(包括数量跟用户名)
(4)点击购物车时,也是先判断是否登录,本来想用过滤器(Filter)来实现
的,但是怎样也配置不好url。然后根据用户名和状态查询购物车表的信息,然后页面也是jsp标签forEach循环动态获取的。
(5)购物车具体功能实现
数量加减: 都是通过JavaScript刷新的,例如加数量:
function addFunction(flag){
var count=document.getElementById("count_"+flag).innerHTML;
count=parseInt(count)+1; document.getElementById("count_"+flag).innerHTML=count;
这里所有功能实现,都与循环的状态id有关(status.count),因为每个操作具体到哪一个商品。当点击复选框时,总计会从零刷新,取消时总计就会减少相对应的金额, 点击全选,就会获得所有价格,都是js实现的,很简单。
(6) 点击去结算,获取页面所有信息,数量,总计,单价,商品id,与其前面一样。