Java Web实现购物车(实例二)

1.创建封装图书信息类:
用于封装图书的信息,其中定义了id和name属性,分别表示书的编号和名称。

mport java.io.Serializable;

public class Book   implements  Serializable {

	 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 serId(String id) {
		 this.id=id;
	 }
	 public String getName() {
	  return name ;
	   
	 }
	 public void setName(String name) {
		 this.name=name;
	 }
	 }
 

2.创建数据库模拟类:
用于模拟保存所有图书的数据库。
通过Map集合存储了5个不同的Book对象,提供了获取指定图书和所有图书的相关方法。


import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

public class BookDB {
    private static Map<String,Book> books=new LinkedHashMap<String ,Book>();
    		static {
    			books.put("1",new Book("1","javaweb开发"));
    			books.put("2",new Book("2","javaweb工程"));
    			books.put("3",new Book("3","javaweb教程"));
    			books.put("4",new Book("4","javaweb任务"));
    			books.put("5",new Book("5","javaweb实践"));
    		 
    		}
    		//获取所有的图书
    		public static Collection <Book>getAll(){
    		   return books.values();
    		}
    		//根据指定的id获得图书
    		public static Book getBook(String id) {
    			return books.get(id);
    			
    		}
}

3.创建Servlet
(1)创建一个ListBookServlet类,用于显示所有可购买图书的列表
通过单击“购买”连接,可将指定的图书添加到购物车中。


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 req, HttpServletResponse resp) throws ServletException, IOException {
   resp.setContentType("text/html;charset=utf-8");
	  PrintWriter out=resp.getWriter() ;
	  Collection<Book> books=BookDB.getAll();
       out.write(("本站提供的图书有<br />"));
    for(Book book:books) {
    	String url="/RefreshServlet/PurchaseServlet?id="+book.getID();
    	resp.getWriter().println(book.getName()+"<a href='"+url+"'>点击购买</a><br />");
    }
 
}
}

(2)创建一个PurchaseServlet类:
主要将用户购买的图书信息保存到session对象中;另一个是在用户购买图书结束后,将页面重定向到用户已经购买的图书列表。通过ArrayList集合模拟一个购物车,然后将购买的所有图书添加到购物车中,最后通过Session对象传递给CartServlet,由CartServlet展示用户已经购买的图书。

 
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;

public class PurchaseServlet extends HttpServlet{
 
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		 //获得用户购买的商品
		 String id=req.getParameter("id");
		 if((id==null)) {
			 //如果id为null,重定向到listbookservlet页面
			 String url="/RefreshServlet/ListBookServlet";
			 resp.sendRedirect(url);
               return;
		 }
		 Book book= BookDB.getBook(id);
		 //创建或者获得用户的session对象
		 HttpSession session=req.getSession();
		 //从session对象中获得用户的购物车
		 List<Book> cart=(List)session.getAttribute("cart");
		 if(cart==null) {
			 //首次购买。为用户为创建一个购物车(list集合模拟购物车)
			 cart=new ArrayList<Book>();
			 //将购物车存入session对象
			 session.setAttribute("cart", cart);
		 }
		 //将商品放入购物车
		 cart.add(book);
		 //创建Cookie存放Session的标识号
		 Cookie cookie=new Cookie("JSESSIONID",session.getId());
		 cookie.setMaxAge(10);
		 cookie.setPath("/RefreshServlet");
		 resp.addCookie(cookie);
		 //重定向到购物车页面
		  
		 String url="/RefreshServlet/CartServlet";
		 resp.sendRedirect(url);
	 }
	 

}

(3)创建一个CartServlet类,主要用于展示用户已经购买的图书列表。


import java.io.IOException;
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;

public class CartServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setContentType("text/html;charset=utf-8");
		//变量cart引用用户的购物车
		List<Book>cart=null;
		//变量purflag标记用户是否买过商品
		boolean purflag=true;
		//获得用户的session
		HttpSession session=req.getSession(false);
		//如果session为null,purflag置为false
	    if(session==null) {
	    	purflag=false;
	    }else {
	    	//获得用户购物车
	    	cart=(List<Book>) session.getAttribute("cart");
	    	//如果用的购物车null,purflag置为false;
	    	if(cart==null) {
	    		purflag=false;
	    	}
	    }
	    /*
	     * 如果purflag为false,表示用户没有购买图书,重定向到listbookservlet
	     */
	    if(!purflag) {
	    	resp.getWriter().println("对不起!您还没买任何商品!");
	    }else {
	    	resp.getWriter().println("你购买的图书有:<br/>");
	    	 
	    	for(Book book:cart) {
	    		resp.getWriter().print(book.getName()+"<br/>");
	    	}
	    }
	}
	

}

4.web.xml配置

 <servlet>
     <servlet-name>PurchaseServlet</servlet-name>
     <servlet-class> PurchaseServlet</servlet-class>
     
 </servlet>
 <servlet-mapping>
       <servlet-name>PurchaseServlet</servlet-name>
       <url-pattern>/PurchaseServlet</url-pattern>
    </servlet-mapping>
    
     <servlet>
     <servlet-name>ListBookServlet</servlet-name>
     <servlet-class> ListBookServlet</servlet-class>
     
 </servlet>
 <servlet-mapping>
       <servlet-name>ListBookServlet</servlet-name>
       <url-pattern>/ListBookServlet</url-pattern>
    </servlet-mapping>
    
     <servlet>
     <servlet-name>CartServlet</servlet-name>
     <servlet-class> CartServlet</servlet-class>
     
 </servlet>
 <servlet-mapping>
       <servlet-name>CartServlet</servlet-name>
       <url-pattern>/CartServlet</url-pattern>
    </servlet-mapping>
    
 
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值