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

来源:互联网 发布:60数据库海盗的帽子 编辑:程序博客网 时间:2024/05/20 06:55

  跟着书上做了一个简单的购物功能,代码如下:

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;//获得用户的sessionHttpSession session = request.getSession(false);//如果session为null,purFlag置为falseif(session==null){purFlag=false;}else{//获得用户购物车cart=(List)session.getAttribute("cart");//如果用的购物车为null,purFlag为falseif(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后,可按照预期的正常进行!但是感觉这更像是一个购物车功能,算了,无所谓了,之后自己按照自己的想法做一个吧。

  ┐( ̄ヮ ̄)┌

0 0