首页

2.购买页

3.购物车页

1. 首页代码 发送一个post请求

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<img src="/img/bookcover/shoping.png" alt="购物">
<form action="goshop.do" method="post">
<p>欢迎您</p><br>
<input type="submit" value="进入购物">
</form>
</body>
</html>
2.处理首页post请求的controler
package cc.openhome.controler;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.LinkedHashMap; @WebServlet("/goshop.do")
public class GoShop extends HttpServlet { void processRequest(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException
{
BookDb bs = new BookDb();
LinkedHashMap<String,Book> books = bs.getAll();
req.setAttribute("books",books);
req.getRequestDispatcher("shop.view").forward(req,resp); } @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
processRequest(req,resp); } @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
processRequest(req,resp);
}
}
3 ,展示购物页面
package cc.openhome.view;

import cc.openhome.controler.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.LinkedHashMap; @WebServlet("/shop.view")
public class ShopView extends HttpServlet { protected void processRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8"); String bookid = req.getParameter("bookid");
int count = 0;
HttpSession session = req.getSession(); // 在点击了购买之后书的数量在加一,否则只刷新
if(session.getAttribute("count") != null && bookid != null){
Integer c = (Integer) session.getAttribute("count");
count = c + 1;
}
session.setAttribute("count",count); //购物
Cart cart = (Cart) req.getSession().getAttribute("cart");
if(cart == null){
cart = new Cart();
req.getSession().setAttribute("cart",cart);
} BusinessService bussiness = new BusinessService();
if(count > 0){
bussiness.buyBook(bookid,cart);
}
session.setAttribute("cart",cart); PrintWriter out = resp.getWriter();
out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01'" +
"Transitional//EN");
out.println("<html>");
out.println("<head>");
out.println("<title>购物网页</title>");
out.println("</head>");
out.println("<body>");
out.println("<form action='' method='post'>");
out.println("<table width='100%'>");
out.println("<td><img src='img/bookcover/shop.png' alt='小购物车' width='50'>" +
"<a href='cart.view'>已采购"+count+"书籍</a><td>");
out.println("</table>");
out.println("<table width='100%'>");
out.println("<tr>");
out.println("<td style='color:blue'>书籍编号<td>");
out.println("<td style='color:blue'>书名<td>");
out.println("<td style='color:blue'>图片</td>");
out.println("<td style='color:blue'>价格<td>");
out.println("<td style='color:blue'>购买<td>");
out.println("</tr>");
int i = 0;
LinkedHashMap <String,Book> books = (LinkedHashMap <String,Book>) req.getAttribute("books");
for (String value : books.keySet()){
i++;
Book book = books.get(value);
out.println("<tr>");
out.println("<td>"+book.getId()+"<td>");
out.println("<td>"+book.getName()+"<td>");
out.println("<td><img src='/img/bookcover/book"+i+".jpeg'></td>");
out.println("<td>"+book.getPrice()+"<td>");
out.println("<td><a href='"+resp.encodeURL("goshop.do")+"?bookid="+book.getId()+"'>购买此书</a><td>");
out.println("<tr>"); }
/*
int i,j = 0,k = 0;
int len = books.size();
for(i = 0;i < len; i++,j++,k++){
if(j % 3 == 0){
out.println("<tr>");
}
out.println("<td>");
out.println("<img src='/img/bookcover/book"+i+".jpeg'>");
out.println("</td>");
if(k % 3 == 0){
out.println("</tr>");
}
}
j = 0;
k = 0;
for( i = 0;i < len; i++,j++,k++){
if(j % 3 == 0){
out.println("<tr>");
}
out.println("<td>");
out.println("<a href='#'>购买此书</a>");
out.println("</td>");
if(k % 3 == 0){
out.println("</tr>");
}
}
*/
out.println("</table>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
out.close();
} @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
processRequest(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
processRequest(req, resp);
}
}
4.购物车页面
package cc.openhome.controler;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map; @WebServlet("/cart.view")
public class CartShow extends HttpServlet {
public void processRequest(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
resp.setContentType("text/html;charset=UTF-8");
HttpSession session = req.getSession();
Cart carts = (Cart) session.getAttribute("cart"); PrintWriter out = resp.getWriter();
out.println("<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01'" +
"Transitional//EN");
out.println("<html>");
out.println("<head>");
out.println("<title>购物结算</title>");
out.println("</head>");
out.println("<body>");
out.println("<form action='' method='post'>");
out.println("<table width='100%'>");
out.println("<td><img src='img/bookcover/shoping.png' alt='购物车' width='100'>");
out.println("</table>");
out.println("<table width='100%'>");
out.println("<tr>");
out.println("<td style='color:blue'>书籍编号<td>");
out.println("<td style='color:blue'>书名<td>");
out.println("<td style='color:blue'>图片</td>");
out.println("<td style='color:blue'>单价<td>");
out.println("<td style='color:blue'>数量<td>");
out.println("<td style='color:blue'>单本书总价<td>");
out.println("</tr>");
int i = 0;
Map<String,CartItem> bookmap = carts.getBookMap();
for (String value : bookmap.keySet()){
i++;
CartItem citem = bookmap.get(value);
Book bk = citem.getBook(); out.println("<tr>");
out.println("<td>"+bk.getId()+"<td>");
out.println("<td>"+bk.getName()+"<td>");
out.println("<td><img src='/img/bookcover/book"+i+".jpeg'></td>");
out.println("<td>"+bk.getPrice()+"<td>");
out.println("<td>"+citem.getQuantity()+"<td>");
out.println("<td>"+citem.getPrice()+"<td>");
out.println("</tr>");
}
out.println("<tr>");
out.println("<td style='color:green';font-size:200%'>总价</td>");
out.println("<td style='color:green';font-size:200%'> "+carts.getPrice()+"</td>");
out.println("</tr>");
out.println("</table>");
out.println("</form>");
out.println("</body>");
out.println("</html>");
out.close(); } @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
processRequest(req, resp);
} @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
processRequest(req, resp);
}
}
5,书籍类
package cc.openhome.controler;

import java.util.ArrayList;

public class Book {
private String id;
private String name;
private double price;
public Book(){ }
public Book(String id,String name, double price){
this.id = id;
this.name = name;
this.price = price;
} public String getId() {
return id;
} public String getName() {
return name;
} public double getPrice() {
return price;
}
}
6,单个购物车类
package cc.openhome.controler;

public class CartItem {
private Book book;
private int quantity;
private double price; public double getPrice() {
return book.getPrice() * this.quantity;
} public Book getBook() {
return book;
} public void setBook(Book book) {
this.book = book;
} public int getQuantity() {
return quantity;
} public void setQuantity(int quantity) {
this.quantity = quantity;
} public void setPrice(double price) {
this.price = price;
}
}
7,购物车类
package cc.openhome.controler;

import java.util.LinkedHashMap;
import java.util.Map; public class Cart {
private Map<String,CartItem> bookMap = new LinkedHashMap<>(); private double price; public void addBook(Book book){
CartItem cartItem = bookMap.get(book.getId()); if(cartItem == null){
cartItem = new CartItem();
cartItem.setBook(book);
cartItem.setQuantity(1); bookMap.put(book.getId(),cartItem);
}else {
cartItem.setQuantity(cartItem.getQuantity() + 1);
}
} public double getPrice() {
double totalPrice = 0;
for(Map.Entry<String,CartItem> me : bookMap.entrySet()){
CartItem cartItem = me.getValue(); totalPrice += cartItem.getPrice();
}
return totalPrice;
} public Map<String, CartItem> getBookMap() {
return bookMap;
} public void setBookMap(Map<String, CartItem> bookMap) {
this.bookMap = bookMap;
} public void setPrice(double price) {
this.price = price;
}
}
8图书数据源
package cc.openhome.controler;

import java.util.LinkedHashMap;

public class BookDb {
private LinkedHashMap<String,Book> map = new LinkedHashMap<>(); public BookDb(){
map.put("1",new Book("1","java编程",10.00));
map.put("2",new Book("2","C++编程",10.00));
map.put("3",new Book("3","C编程",10.00));
} public LinkedHashMap<String,Book> getAll(){
return map;
}
public Book findBook(String id){
return map.get(id);
}
}
总结:对于个人而言:难点在于
1.页面数据的展示.
2.使用resp.encodeurl 在本页面刷新.
3.使用<a href> 重定向并且带了一个参数,把书的id发送给本页面处理.
4.http session 来存储发送数据.
5.书籍,购物车类的设计.

Java servlet 实现的简易购物车的更多相关文章

  1. javaweb练手项目jsp+servlet简易购物车系统

    简易购物车项目 这是一个用intellij IDEA做的简易的javaweb项目,开发环境使用的jdk1.8和tomcat8以及mysql数据库. 1.项目开发准备: 创建github仓库 项目框架搭 ...

  2. Session机制二(简易购物车案例)

    一:案例一(简易购物车) 1.目录结构 2.step1.jsp <%@ page language="java" contentType="text/html; c ...

  3. Java --Servlet 32个经典问题

    Servlet方面 1.说一说Servlet的生命周期? Servlet有良好的生存期的定义,包括加载和实例化.初始化.处理请求以及服务结束.这个生存期由javax.servlet.Servlet接口 ...

  4. 使用Java类库POI生成简易的Excel报表

    使用Java类库POI生成简易的Excel报表 1.需求 1.数据库生成报表需要转义其中字段的信息.比如 1,有效 2.无效等 2.日期格式的自数据需要转义其格式. 3.标题的格式和数据的格式需要分别 ...

  5. java servlet 几种页面跳转的方法及传值

    java servlet 几种页面跳转的方法及传值   java web 页面之间传值有一下这几种方式1.form 表单传递参数2.url地址栏传递参数3.session4.cookie5.appli ...

  6. Java Servlet与Web容器之间的关系

    自从计算机软件开发进入网络时代,就开始涉及到通讯问题.在客户/服务器(也叫C/S应用)时期,每个软件都有自己的客户端和服务器端软件.并且客户端和服务器端之间的通讯协议差别也很大.后来随着互联网的发展, ...

  7. java servlet调用带有多个返回结果集的存储过程

    一.mysql存储过程 这里我先说下我这个功能实现的逻辑及途中遇到的一些问题.这个存储过程一共带两个输入参数,一共关联到两张表的查询,每个参数都对应查询表中的一个判断,所以一共返回了两个结果集(当然要 ...

  8. java servlet+mysql全过程(原创)

    前段时间写过一篇 servlet+oracle的文章,但是那是因为公司有可能接那么一个项目,然后我当时也比较闲,所以随便学了下,那玩意是白去研究了,因为公司后面并没接到那项目. 这次学servlet用 ...

  9. java servlet+oracle 新手可看

    最近公司领导告诉接下去接的一个产品,可能会涉及到oracle数据库,以前用得最多的是mssql,前些时间学了下mysql也算少许用过.oracle没接触过.应为我之前做过.net开发,所以数据访问接口 ...

随机推荐

  1. ACFS-9459: ADVM/ACFS is not supported on this OS version

    环境:RHEL 7.3 + Oracle 12.2.0.1 RAC 现象:acfs资源状态不正常,asmca图形也没有acfs相关内容,无法使用acfs. 1.具体现象 2.定位bug 3.解决问题 ...

  2. flex检查对象是否存在某个方法(函数)、属性的最简方法

    //if("方法/属性名" in object){存在do...}else{不存在do...}if("data" in event.tagert)//只要使用这 ...

  3. CDN和智能DNS原理和应用 (原)

    CDN是什么? CDN的全称是Content Delivery Network,即内容分发网络. CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发.调 ...

  4. fiddler学习总结--fiddler抓包篡改数据请求

    操作步骤: 步骤一.在fiddler的命令行中输入需要拦截的地址:bpu https://www.baidu.com 记得按一下回车键 步骤二.在百度搜索栏中,输入“火影忍者”,页面会一直处于加载的状 ...

  5. Python记录12:迭代器+生成器+生成式

    '''1. 什么是迭代器 什么是迭代:迭代就是一个重复的过程,但是每一次重复都是基于上一次的结果而进行的 单纯的重复不是迭代: while True: print(1) 迭代的过程 l=['a','b ...

  6. SQLite的时间差判断--删除N天前的数据的两种写法

    比如我有个用SQLite Studio创建的Sqlite3类型数据库,里面有个表名为StatisticsData的表结构是 : -- 表:StatisticsData CREATE TABLE &qu ...

  7. [c/c++] programming之路(19)、数组指针

    一.指针运算 #include<stdio.h> #include<stdlib.h> void main0(){ ; int *p=&a; printf());//变 ...

  8. oracle 连接问题汇总

    遇到的情况: 1/后台配置完好,若是连其他的库都是好的,当连接另外的库时,始终连接不上,这是需要考虑到服务端安装文件tnsnames文件中服务名在客户端的安装文件tnsnames文件中是否存在

  9. C++类的大小计算汇总

    C++中类涉及到虚函数成员.静态成员.虚继承.多继承.空类等. 类,作为一种类型定义,是没有大小可言的. 类的大小,指的是类的对象所占的大小.因此,用sizeof对一个类型名操作,得到的是具有该类型实 ...

  10. 【Luogu P2664】树上游戏

    Problem Description \(lrb\) 有一棵树,树的每个节点有个颜色.给一个长度为 \(n\) 的颜色序列,定义 \(s(i,j)\) 为 \(i\) 到 \(j\) 的颜色数量.以 ...