您的位置:首页 > 编程语言 > Java开发

javaweb学习笔记(七)-简单购物功能实现

2017-04-30 12:34 211 查看
  跟着书上做了一个简单的购物功能,代码如下:

import java.io.Serializable;
/*
* 该类用于封装图书信息,其中定义了id和name属性,分别用来表示书的编号和名称
* */
public class Book implements Serializable{
private static final long serialVersionUID=1L;
private String id;
private String name;
public Book(){

}
public Book(String id,String name){
this.id=id;
this.name=name;
}
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;
}
}

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
/*
* 该类用于模拟保存所有图书的数据库。该类在实现时,通过Map集合储存了5个不同的Book对象,
* 提供了获取指定图书和所有图书的相关方法
* */
public class BookDB {
private static Mapbooks=new LinkedHashMap();

static{
books.put("1", new Book("1","javaweb开发"));
books.put("2", new Book("2","jdbc开发"));
books.put("3", new Book("3","java编程思想"));
books.put("4", new Book("4","java开发"));
books.put("5", new Book("5","c#"));
books.put("6", new Book("6","javascript开发"));
books.put("7", new Book("7","计算机组成原理"));
books.put("8", new Book("8","计算机网络基础"));
}
//获得所有的图书
public static Collection getAll(){
return books.values();
}
//根据指定的id获得图书
public static Book getBook(String id){
return books.get(id);
}
}

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/*
* 该类用于显示所有可购买图书的列表,通过单击购买链接,便可将指定的图书添加到购物车中
* */
public class ListBookServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
Collectionbooks=BookDB.getAll();
out.write("本站提供的图书如下:
");
for(Book book : books){
String url = "/bookshop/PurchaseServlet?id="+book.getId();
out.write(book.getName()+"点击购买
");
}
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

}

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/*
* 该类有两个功能,一个是将用户购买的图书信息保存到Session对象中,一个是在用户购买图书之后,将页面重定向到
* 用户已经购买的图书列表。该类在实现时,通过ArrayList集合模拟一个购物车,将购买的所有图书添加到购物车中
* 最后通过Session对象传递给CartServlet,由CartServlet展示用户已经购买的图书
*
* */
public class PurchaseServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
//获得用户购买的商品
String id=request.getParameter("id");
if(id==null){
//如果id为null,重定向到ListBookServlet页面
String url="/bookshop/PurchaseServlet";
response.sendRedirect(url);
return;
}
Book book = BookDB.getBook(id);
//创建或者获得用户的Session对象
HttpSession session = request.getSession();
//从Session对象中获得用户的购物车
Listcart=(List)session.getAttribute("cart");

if(cart==null){
//首次购买,为用户创建一个购物车(List集合模拟购物车)
cart=new ArrayList();
//将购物车存入Session对象
session.setAttribute("cart", cart);
}
//将商品放入购物车
cart.add(book);
//创建Cookie存放Session的标识号
Cookie cookie=new Cookie("JSESSIONID",session.getId());
cookie.setMaxAge(60*30);
cookie.setPath("/bookshop");
response.addCookie(cookie);
//重定向到购物车页面
String url="/bookshop/CartServlet";
response.sendRedirect(url);
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

}

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/*
* 该类用于展示用户已经购买的图书列表。该类在实现时,需要通过getSession()获取所有的Session对象,然后判断
* 用户是否已经购买了书籍,如果购买了,则显示购买的图书列表,否则显示:对不起,您还未购买图书!
*
* */
public class CartServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
//变量cart引用用户的购物车
Listcart=null;
//变量purFlag标记用户是否购买过商品
boolean purFlag=true;
//获得用户的session
HttpSession session = request.getSession(false);
//如果session为null,purFlag置为false
if(session==null){
purFlag=false;
}else{
//获得用户购物车
cart=(List)session.getAttribute("cart");
//如果用的购物车为null,purFlag为false
if(cart==null){
purFlag=false;
}
}
/*
* 如果purFlag为flase,表明用户没有购买书,重新定向到ListBookServlet页面
*
* */

if(!purFlag){
out.write("对不起,您还未购买商品!
");
}else{
//否则显示用户购买的商品信息
out.write("您购买的图书有:
");
for(Book book:cart){
out.write(book.getName()+"
");
}
}

out.write("返回图书列表");
}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}

}

  在配置好web.xml后,可按照预期的正常进行!但是感觉这更像是一个购物车功能,算了,无所谓了,之后自己按照自己的想法做一个吧。

  ┐( ̄ヮ ̄)┌
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  狗没拿伞的博客