1、在JSP中如何存储信息
前面介绍过的:在数据库中存储信息;在request对象中存储信息。
分为两类:内存 和 持久存储
内存中如何组织数据:
pageContext对象,存储当前页面的信息;请求涉及多少个文件,就会创建多少个pageContext对象。
request对象,一次请求会创建一个request对象,如果希望在同一次请求的多个文件之间共享信息,可以保存在request中。
session对象,每个客户端对应一个session,session中用于存储在用户的整个访问过程中要使用的信息。最典型的应用把用户的登录信息保存在session中,这样在后续的页面中使用登录信息。
application对象,整个网站对应这样一个对象,访问网站的所有用户在访问所有网页的时候都可以使用。典型的应用是公有的聊天室,聊天信息所有人都可以看到,这时候就应该使用application对象。
持久存储:
数据库,通过JDBC访问。
文件,通过IO进行操作。
Cookie,信息存储在客户端。如果使用数据库和文件,信息都存在服务器端。
2、网上购物车的基本功能
浏览图书信息;
把图书添加到购物车中;
对购物车中的物品进行管理;
查看购物车的信息;
生成订单。
3、如何保存在购物过程中选择的物品?
关心购物车中有哪些类型的物品,每种类型的物品有多少。物品的种类数量不确定。每次请求只能选择某一种物品。根据这些特点,应该设计购物车的存储结构如下:
1)需要把购物车放到session中,这样才能进行多个页面之间的共享;
2)因为物品种类不确定,所以一般选择ArrayList来存储物品种类以及数量;
3)对于每一种物品,包含物品本身的信息以及物品的购买数量,通常使用订单项来表示,里面包含了物品对象及其数量。
4、完成向购物车中添加图书的功能
V部分:输入,是选择物品向购物车添加的界面,使用物品信息查看界面;
输出,显示购物车信息的页面。
M部分:把选择的物品添加到购物车中,需要知道原来购物车中有什么信息,购物车在session中保存,所以需要对session进行操作。
C部分:第一句话,获取信息,从输入界面获取要添加的图书,从session中获取原有的购物车信息。
第二句话,调用M部分的添加购物车功能。
第三句话,保存信息,把修改后的购物车重新写入session中。
第四句话,转向显示购物车信息的页面。
5、构建订单项类
package bean;
// 表示购物项
public class Item{
private BookBean book;
private int quantity;
public void setBook(BookBean book){
this.book = book;
}
public BookBean getBook(){
return book;
}
public void setQuantity(int quantity){
this.quantity = quantity;
}
public int getQuantity(){
return quantity;
}
}
6、输入界面
在books.jsp中的图书列表后增加“添加到购物车”这样的超链接。
7、删除功能、修改购物车信息
界面:
删除的代码:
<form action="deleteItem" method="post">
<input type="hidden" name="bookid" value="${item.book.bookid}">
<input type="submit" value="删除">
</form>
修改的:
<form action="updateCart" method="post">
<input type="text" name="quantity" value="${item.quantity}">
<input type="hidden" name="bookid" value="${item.book.bookid}">
<input type="submit" value="修改">
</form>
M部分:
从ArrayList对象cart中删除Item对象item:cart.remove(item) cart.remove(i)
修改功能:在添加过程中如果要添加的图书已经存在,就相当于修改。
C部分:与添加功能中的代码非常类似