后续会把功能更全面,连接数据库还可以进行库存数目清点的购物车发博客,先介绍一个简易购物车
我是设置了两个购物车的页面,两个页面的代码差不多一样,就是实现了类似于下一页这样的功能,第一页的代码大概是这样的,我是使用的CheckBox,可以进行多选的,在商品的后面我有一个添加了照片,但是时间有限就添加了一个做样例,大家感兴趣的话也可以都添加,表单下面同样还是两个按钮,一个提交一个重置
最下方我设置了超链接,第一个是实现下一页的功能,另外一个是显示购物车自己买的东西
<body>
<p>周边大甩卖,一律八折</p>
<img border="0" src="./image/hezhao.jpg" width="580" height="411"></img><br>
<form action="data.jsp" method="post" name="buy">
<input type="checkbox" name="data" value="海绵宝宝DVD">海绵宝宝DVD<br>
<img border="0" src="./image/hezhao.jpg" width="580" height="411"></img><br>
<input type="checkbox" name="data" value="樱桃小丸子DVD">樱桃小丸子DVD<br>
<input type="checkbox" name="data" value="名侦探柯南DVD">名侦探柯南DVD<br>
<input type="submit" value="购买">
<input type="reset" value="重写"><br><br>
<a href="buy2.html">买点别的</a> <a href="list.jsp">查看购物车</a>
</form>
</body>
下面是第二页商品的代码,和第一页的基本类似
<body>
<p>周边大甩卖,一律八折</p>
<form action="data.jsp" method="post" name="buy">
<input type="checkbox" name="data" value="派大星公仔">派大星公仔<br>
<input type="checkbox" name="data" value="章鱼哥公仔">章鱼哥公仔<br>
<input type="checkbox" name="data" value="海绵宝宝公仔">海绵宝宝公仔<br>
<input type="submit" value="购买">
<input type="reset" value="重写"><br><br>
<a href="buy.jsp">买点别的</a> <a href="list.jsp">查看购物车</a>
</body>
还有一个是存放购物车选购内容的界面,我是使用的jsp来实现的,前面两个表单数据都是传到data.js这里的,首先我们先获取表单传过来的内容,存放到goods中,接下来代码的意思是,首先我先把之前session中的内容存放到now中,然后重新创建一个hashset名字叫set,判断如果表单传来的数据有内容,代表选购了商品,就把信息存入到set中,然后在判断之前的购物车中是否有内容,如果有内容也把信息存入set中,最后把set的内容存到session-list中,传递到显示页面
<body>
<%
request.setCharacterEncoding("UTF-8");
String goods[] = request.getParameterValues("data"); //获取表单传过来的数据存入字符串数组中
Set<String> now = (Set<String>) session.getAttribute("list"); //当前session内的东西
Set<String> set = new HashSet<String>(); //新建集合将数据存入
if (goods != null)
Collections.addAll(set, goods); //将货物添加到集合中
if (now != null)
set.addAll(now); //将session内当前的东西添加到集合中
session.setAttribute("list", set); //将集合存入session中,命名为list
%>
</body>
<script language="JavaScript">
history.go(-1); //后退刷新
</script>
最后一个是查看购物车的代码,我还写了一段代码是来显示是第几位结账的客户,想要实现第几位结账的客户,不过是很简单的那一种,我是这样的代码,首先是利用一个整数count来计数,然后使用synchronized来实现有一位用户结账的时候别的用户不能结账,否则会实现count=某个数的时候有两个人
先判断count是不是为空,为空代表这个人是第一个人,然后执行add操作,然后再将count封到application中,如果不是第一个人的 话,判断cookie的头文件是否为空,我是想利用这个功能来判断用户是不是重复的,如果不为空就代表重复就不再添加,如果为空就代表不重复,执行add,然后再将count的数封到application中,执行完之后再输出到网页上
<%!
int count=0;
synchronized void add(){
count++;
}
%>
<%
if(application.getAttribute("count")==null)
{add();
application.setAttribute("count", count);
}
else{
if(request.getHeader("cookie")==null)
{count=Integer.parseInt(application.getAttribute("count").toString());
add();
application.setAttribute("count", count);}
else{
count=Integer.parseInt(application.getAttribute("count").toString());
application.setAttribute("count", count);}}
out.println("您是第"+count+"位访问者");
%>
接下来是显示购物车内容的代码,首先是把所有选购的内容全部存储到goods里面,如果goods不为空的话,就使用迭代器然后按照一定的顺序访问goods中的所有元素并打印出来,然后让session失效,方便下一位客户选购
<%
Set <String> goods = (Set<String>)session.getAttribute("list");
if (goods!= null)
for (Iterator it = goods.iterator(); it.hasNext(); )//按照一定的顺序访问goods中的所有元素
out.print(it.next().toString() + "<br>");
session.invalidate();
%>
</center>
<pre>
点击
<a href="allmain.html"><b>这里</b></a>返回主页面
</pre>