使用servlet中的session实现简单的购物车功能(显示商品,点击添加到购物车,查看购物车)
以书为例,首先创建Book类
public class Book {
private String id;
private String name;
private double price;
private String author;
public Book(){}
public Book(String id, String name, double price, String author) {
super();
this.id = id;
this.name = name;
this.price = price;
this.author = author;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
//重写toString()方法
@Override
public String toString() {
return "Book [id=" + id + ", name=" + name + ", price=" + price
+ ", author=" + author + "]";
}
}
简单的实现数据库端,直接写入几条数据
public class DBUtil {
private static Map<String,Book> books = new HashMap<String,Book>();
static{
books.put("1", new Book("1","红楼梦",120,"曹雪芹"));
books.put("2", new Book("2","西游记",120,"吴承恩"));
books.put("3", new Book("3","水浒",120,"施耐庵"));
books.put("4", new Book("4","三国演义",120,"罗贯中"));
}
/**
* 得到所有书的方法
*/
public static Map<String,Book> getAllBooks()
{
return books;
}
/**
* 根据书的id得到书对象
*/
public static Book findBookById(String id)
{
return books.get(id);
}
}
下面实现在页面中显示所有的书
public class ShowAllBooks extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//显示所有书籍的servlet
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<h2>本网站所有书籍如下:</h2>");
//得到所有书籍
Map<String,Book> books = DBUtil.getAllBooks();
for(Map.Entry<String, Book> en:books.entrySet())
{
String key = en.getKey();
Book book = en.getValue();
//点击书籍名称跳转到AddToCar中,添加到购物车
String url = request.getContextPath()+"/servlet/addtocar?id="+key;
out.println("<a href='"+url+"'>"+book.getName()+"</a><br/>");
}
//点击查看购物车,跳转到ShowCar中
String path = request.getContextPath()+"/servlet/showcar";
out.println("<a href='"+path+"'>查看购物车</a>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
添加到购物车中的功能实现
public class AddToCar extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
//把书添加到购物车的Servlet
String bookid = request.getParameter("id");//得到书的id
//根据书的id得到书对象
Book book = DBUtil.findBookById(bookid);
//把书放到购物车 ---用集合当购物车,车放到 session中
HttpSession session = request.getSession();
//得到购物车
List<Book> list = (List<Book>) session.getAttribute("car");
if(list==null){
list = new ArrayList<Book>();
}
list.add(book);//把书放到购物车
//把购物车放到 Session
session.setAttribute("car", list);
PrintWriter out = response.getWriter();
out.println("添加成功!");
//转到首页
response.setHeader("refresh", "2;url='"+request.getContextPath()+"/servlet/showallbooks'");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
显示购物车中的书籍:
public class ShowCar extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//显示购物车中所有书的Servlet
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
//得到购物车
List<Book> list =(List<Book>) session.getAttribute("car");
if(list==null){
out.println("你还什么都没买呢!!!");
response.setHeader("refresh", "2;url='"+request.getContextPath()+"/servlet/showallbooks'");
}
else{
for(Book book:list)
{ out.println(book.getName()+","+book.getPrice()+","+book.getAuthor()+"<br/>");
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}