Java servlet 实现的简易购物车
首页

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 实现的简易购物车的更多相关文章
- javaweb练手项目jsp+servlet简易购物车系统
简易购物车项目 这是一个用intellij IDEA做的简易的javaweb项目,开发环境使用的jdk1.8和tomcat8以及mysql数据库. 1.项目开发准备: 创建github仓库 项目框架搭 ...
- Session机制二(简易购物车案例)
一:案例一(简易购物车) 1.目录结构 2.step1.jsp <%@ page language="java" contentType="text/html; c ...
- Java --Servlet 32个经典问题
Servlet方面 1.说一说Servlet的生命周期? Servlet有良好的生存期的定义,包括加载和实例化.初始化.处理请求以及服务结束.这个生存期由javax.servlet.Servlet接口 ...
- 使用Java类库POI生成简易的Excel报表
使用Java类库POI生成简易的Excel报表 1.需求 1.数据库生成报表需要转义其中字段的信息.比如 1,有效 2.无效等 2.日期格式的自数据需要转义其格式. 3.标题的格式和数据的格式需要分别 ...
- java servlet 几种页面跳转的方法及传值
java servlet 几种页面跳转的方法及传值 java web 页面之间传值有一下这几种方式1.form 表单传递参数2.url地址栏传递参数3.session4.cookie5.appli ...
- Java Servlet与Web容器之间的关系
自从计算机软件开发进入网络时代,就开始涉及到通讯问题.在客户/服务器(也叫C/S应用)时期,每个软件都有自己的客户端和服务器端软件.并且客户端和服务器端之间的通讯协议差别也很大.后来随着互联网的发展, ...
- java servlet调用带有多个返回结果集的存储过程
一.mysql存储过程 这里我先说下我这个功能实现的逻辑及途中遇到的一些问题.这个存储过程一共带两个输入参数,一共关联到两张表的查询,每个参数都对应查询表中的一个判断,所以一共返回了两个结果集(当然要 ...
- java servlet+mysql全过程(原创)
前段时间写过一篇 servlet+oracle的文章,但是那是因为公司有可能接那么一个项目,然后我当时也比较闲,所以随便学了下,那玩意是白去研究了,因为公司后面并没接到那项目. 这次学servlet用 ...
- java servlet+oracle 新手可看
最近公司领导告诉接下去接的一个产品,可能会涉及到oracle数据库,以前用得最多的是mssql,前些时间学了下mysql也算少许用过.oracle没接触过.应为我之前做过.net开发,所以数据访问接口 ...
随机推荐
- 在 python3.x中安装 Crypto 库
1.安装:直接找过来 whl 安装:链接: https://pan.baidu.com/s/1zXjzchnqc1GgSWT9TjHDaA 提取码: dzbn 复制这段内容后打开百度网盘手机App,操 ...
- 转:C#使用Dotfuscator混淆代码的加密方法
Author:flymorn Source:flymornCategories:C#编程 PostTime:2011-9-16 1:04:49 正 文: C#编写的代码如果不进行一定程度的混淆和加 ...
- usdt节点启动慢和队列深度超出了范围问题
usdt节点启动慢和队列深度超出了范围问题 usdt的连接节点报错Work queue depth exceeded(队列深度超出了范围)大概是什么问题?重启了几次节点都不行队列深度超出了范围,估计是 ...
- JAX-WS 使用maven创建
maven 创建jar jar包依赖 <dependency> <groupId>junit</groupId> <artifactId>junit&l ...
- iOS项目之获取WebView的高度
获取高度值的方法: - (void)webViewDidFinishLoad:(UIWebView *)webView { // 获取webView的高度 CGFloat webViewHeight ...
- 前后端分离不可缺少的神器 NGINX
样例讲解 1:安装工具包 wget.vim和gcc yum install -y wget yum install -y vim-enhanced yum install -y make cmake ...
- 整型 布尔值 字符串 for循环
1.整型 2.布尔值 3.字符串 4.for循环 1.整型:.python中有长整型, Python3中只有整型 2.布尔值: bool:Ture 真 False 假 数字和布尔值可进行转 ...
- Python新手入门英文词汇(1-1)
英文词汇总结一.交互式环境与print输出 1.print:打印/输出2.coding:编码3.syntax:语法4.error:错误5.invalid:无效6.identifier:名称/标识符7. ...
- UVA1428 Ping pong
思路 分别统计这个位置左边和右边各有多少大于和小于它的数,乘起来即可 使用权值树状数组 代码 #include <cstdio> #include <algorithm> #i ...
- WEB 前端插件整理
Vs Code 系统插件 #1 Bracket Pair Colorizer 让括号拥有独立的颜色,易于区分.可以配合任意主题使用. #2 Code Runner 非常强大的一款插件,能够运行多种语言 ...