您的位置:首页 > 其它

Session实现购物车功能(八)

2017-11-16 18:43 701 查看
(一)创建实体类

package com.Test;

import java.io.Serializable;

/**
*
* @author Kaina
*
*/
public class Book implements  Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String id;
private String name;

public Book(String id, String name) {
//super();
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;
}

}


(二)创建数据库模拟类

package com.Test;

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>();
// 1.保存图书
static {
books.put("1", new Book("1", "Hibernate"));
books.put("2", new Book("2", "Spring"));
books.put("3", new Book("3", "Struts2"));
books.put("4", new Book("4", "Java web"));
books.put("5", new Book("5", "Java"));
}

// 2.获得所有图书
public static Collection<Book> getAll() {
return books.values();
}

// 3.获取指定图书
public static Book getBook(String id) {
return books.get(id);
}
}


(三)创建ListBookServlet类显示所有图书

package com.Test;

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

}

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

doGet(request, response);
}

}


(四)实现购买类PurchaseServlet

package com.Test;

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;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取购买商品的ID号
String  id=request.getParameter("id");
if(id==null){
String  url="/Project01/ListBookServletPath";
response.sendRedirect(url);
return;
}
//2.根据id获取书名
Book book=BookDB.getBook(id);
//3.创建HttpSession对象
HttpSession session = request.getSession();
//4.获取session对象中的购物车

@SuppressWarnings("unchecked")
List<Book> cart=(List<Book>) session.getAttribute("cart");

if(cart==null){
//5.使用List集合当作购物车
cart=new ArrayList<Book>();

//6.使用session对象保存cart对象
session.setAttribute("cart", cart);

}
//把商品添加到购物车
cart.add(book);

//7.创建Cookie对象保存session的id
Cookie cookie=new Cookie("JSESSIONID",session.getId());
cookie.setMaxAge(30*60);
cookie.setPath("/Project01");
response.addCookie(cookie);

//8.重定向到购物车页面
String  url="/Project01/CartServlet";
response.sendRedirect(url);

}

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

doGet(request, response);
}

}


(五)CartServlet显示用户所购买的图书

package com.Test;
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;
public class CartServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

@SuppressWarnings("unchecked")
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
List<Book> cart=null;
//1.标记用户是否买过商品
boolean  purFlag=true;
HttpSession session = request.getSession();
if(session==null){
purFlag=false;
}else{
//2.获取用户购物车
cart=(List<Book>) session.getAttribute("cart");
if(cart==null){
purFlag=false;
}

}
if(!purFlag){
out.println("对不起!您还没有购买任何商品,<br />");
}else{
out.println("您购买的图书有:<br />");

for(Book book:cart){
out.write(book.getName()+"<br />");
}
}

}

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

doGet(request, response);
}

}


(六)配置各个Servlet类

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Project01</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>ListBookServlet</display-name>
<servlet-name>ListBookServlet</servlet-name>
<servlet-class>com.Test.ListBookServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ListBookServlet</servlet-name>
<url-pattern>/ListBookServlet</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>ListBookServlets</display-name>
<servlet-name>ListBookServlets</servlet-name>
<servlet-class>com.Test.ListBookServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ListBookServlets</servlet-name>
<url-pattern>/ListBookServletPath</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>PurchaseServlet</display-name>
<servlet-name>PurchaseServlet</servlet-name>
<servlet-class>com.Test.PurchaseServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>PurchaseServlet</servlet-name>
<url-pattern>/PurchaseServlet</url-pattern>
</servlet-mapping>
<servlet>
<description&
b994
gt;</description>
<display-name>CartServlet</display-name>
<servlet-name>CartServlet</servlet-name>
<servlet-class>com.Test.CartServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CartServlet</servlet-name>
<url-pattern>/CartServlet</url-pattern>
</servlet-mapping>
</web-app>


结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: