小型购物车模块
1.Arms.java
package top.imustshop;
import java.io.Serializable;
/**
* @author dahe
* @version 1.0
* @ no since
* @ 军火库商品的setter&getter类
* @ 属性:id,name(军火编号,军火名称)
*/
public class Arms implements Serializable {
/**
* 序列化的版本号
*/
private static final long serialVersionUID=1L;
/**
* 属性:id,name
*/
private String id;
private String name;
public Arms(){
}
public Arms(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;
}
}
2.ArmsDB.java
package top.imustshop;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author dahe
* @version 1.0
* @ no since
* @ 模拟DB模型,获取所有图书,根据ID获取图书信息
*/
public class ArmsDB {
/**
* 用来记录军火商品的编号和军火实例的对应关系
*/
private static Map<String, Arms> Arms = new LinkedHashMap<String, Arms>();
static {
Arms.put("1", new Arms("1", "W8fuckcdn"));
Arms.put("2", new Arms("2", "御剑"));
Arms.put("3", new Arms("3", "中国蚁剑"));
Arms.put("4", new Arms("4", "unlead gif"));
Arms.put("5", new Arms("5", "Wireshark"));
}
/**
* @return 所有图书
*/
public static Collection<Arms> getAll() {
return Arms.values();
}
/**
* @param id 图书ID信息
* @return param id 对应的图书信息
*/
public static Arms getArms(String id) {
return Arms.get(id);
}
}
3.ListArmsServlet.java
package top.imustshop;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
/**
* @author dahe
* @version 1.0
* @ no since
* @ 获取军火列表,以便可以将军火添加到购物车中
*/
public class ListArmsServlet extends HttpServlet {
private static final long serialVersionUID=1L;
/**
* @param req
* @param resp
* @throws ServletException
* @throws IOException
* 获取所有军火列表
*/
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
PrintWriter out=resp.getWriter();
/**
* 获取所有军火列表
*/
Collection<Arms> Arms = ArmsDB.getAll();
out.write("军火库:<br />");
for(Arms Arm:Arms){
/**
* 添加到购物车逻辑
*/
String url ="/purchase?id="+Arm.getId();
HttpSession s=req.getSession();
String newUrl=resp.encodeRedirectURL(url);
out.write(Arm.getName()+" "+"<a href='"+newUrl
+"'>点击购买</a><br />");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
4.PurchaseArms.java
package top.imustshop;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* @author dahe
* @version 1.0
* @ no since
* 购物车逻辑
*/
public class PurchaseArms extends HttpServlet {
private static final long serialVersionUID=1L;
/**
* 获取用户购买的商品,添加到购物车
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 获取用户购买的商品,指定id的
String id = req.getParameter("id");
if (id == null) {
// 如果id为null,重定向到listarms页面
String url = "/listarms";
resp.sendRedirect(url);
return;
}
Arms book = ArmsDB.getArms(id);
// 创建或者获得用户的Session对象
HttpSession session = req.getSession();
// 从Session对象中获得用户的购物车
List<Arms> cart = (List) session.getAttribute("cart");
if (cart == null) {
// 首次购买。为用户创建一个购物车(List集合模拟购物车)
cart = new ArrayList<Arms>();
// 将购物车存入Session对象
session.setAttribute("cart", cart);
}
// 将商品放入购物车
cart.add(book);
// 创建Cookie存放Session的标识号
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(60 * 30);
cookie.setPath("/");
resp.addCookie(cookie);
// 重定向到购物车页面
String url = "/cart";
String newurl = resp.encodeRedirectURL(url);
resp.sendRedirect(newurl);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
5.CartServlet.java
package top.imustshop;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
/**
* @author dahe
* @version 1.0
* @ no since
* 购物车展示
*/
public class CartServlet extends HttpServlet {
/**
* 用户购买的信息在此处进行购物车展示
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
List<Arms> cart = null;
// 变量purFlag标记用户是否买过软件
boolean purFlag = true;
// 获得用户的session
HttpSession session = req.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为false,表明用户没有购买软件 重定向到ListArmsServlet页面
*/
if (!purFlag) {
out.write("对不起!您还没有购买任何商品! <br />");
} else {
// 否则显示用户购买软件列表的信息
out.write("您购买的软件列表:<br />");
double price = 0;
for (Arms arm : cart) {
out.write(arm.getName() + "<br />");
}
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}