Javaweb-购物商城实现展示商品,实现购物车购物,结算(Servlet+mysql+jsp+tomcat)

article/2025/10/17 21:17:47

演示视频:

购物网站

代码: https://github.com/wu1369955/shopping

购物网站首页

在这里插入图片描述
首先说明:这个是花几天搭建出来玩的,从github上拉到找好看的框架组合的,效果还不错,主要是学习作用.源码之类的也会分享出来,希望一起进步,最好动手实践,可以参照逻辑做的更好,

简易购物商城设计

 实验要求:1.编写注册和登录页面,(要注意检查注册信息是否已经被其他用户使用)。2.编写采购页面,页面显示不同的商品,(可以按分类来展示,如有能力者可增加商品管理页面,对展示的商品进行管理)3.用户可以选择商品并加入购物车,4.用户在购物车可以进行结算产生订单(结算可以不进行实际的支付)。5.自行设计页面的展示和跳转方式,要求必须登录后才能进入下单页面,不登录只能浏览商品页面。6.可以查询订单情况(订单样式自行设计)

一、数据库设计

(1)用户数据表

User表用于存储用户信息

CREATE TABLE IF NOT EXISTS `user`(`user_id` INT UNSIGNED AUTO_INCREMENT,`user_name` VARCHAR(100) NOT NULL,`user_password` VARCHAR(40) NOT NULL,PRIMARY KEY ( `user_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO user (user_id, user_name, user_password) VALUES('1', 'user_1', '123456'),('2', 'user_2', '123456'),('3', 'user_3', '123456');
insert into user(user_name, user_password) VALUES('admin@qq.com', '123');
select * from user;

(2)商品数据表

Mall_cloth 表用于存储衣物商品信息
Mall_food 表用于存储食物商品信息
Mall_fruit 表用于存储水果商品信息
Mall_mobile 表用于存储手机商品信息

drop table if exists `mall_food`;
drop table if exists `mall_cloth`;
drop table if exists `mall_mobile`;
drop table if exists  `mall_fruit`;
create table if not exists `mall_cloth`(`id` int not null ,`name` char(20) not null ,`price`  int not null ,`number` int not null,`describe` char(100) not null ,PRIMARY KEY (`id`))ENGINE =InnoDB default charset=utf8;create table if not exists `mall_fruit` (`id` int not null ,`name` char(20) not null ,`price`  int not null ,`number` int not null,`describe` char(100) not null ,PRIMARY KEY (`id`))ENGINE =InnoDB default charset=utf8;create table if not exists `mall_mobile` (`id` int not null ,`name` char(20) not null ,`price`  int not null ,`number` int not null,`describe` char(100) not null ,PRIMARY KEY (`id`))ENGINE =InnoDB default charset=utf8;create table if not exists `mall_food` (`id` int not null ,`name` char(20) not null ,`price`  int not null ,`number` int not null,`describe` char(100) not null ,PRIMARY KEY (`id`))ENGINE =InnoDB default charset=utf8;insert into mall_cloth (id, name, price, number, `describe`) VALUES
('0','短袖','300','4000','黑色'),
('1','长袖','700','2000','黑色'),
('2','短裤','800','12000','黑色'),
('3','长裤','1000','8000','黑色');insert into mall_fruit (id, name, price, number, `describe`)
values ('4','苹果','23','2000','江西'),('5','香蕉','7','2050','九江'),('6','荔枝','20','15400','江西'),('7','橙子','5','8080','赣南');insert into mall_mobile (id, name, price, number, `describe`) VALUES
('8','手机','1780','5000','华为'),
('9','手表','700','3000','三星'),
('10','平板','800','12400','苹果'),
('11','电脑','5000','6000','苹果');insert into mall_food (id, name, price, number, `describe`) VALUES
('12','三只松鼠','40','785','内地'),
('13','老干妈','20','4545','内地'),
('14','泡椒鸡爪','10','545','内地'),
('15','肥宅快乐水','5','854','内地');

(3)购物表单数据表

Cart 表用于存储购物车商品信息
在这里插入图片描述
Order表用于存储历史订单商品信息
在这里插入图片描述

(4) java 数据设置

java 数据类型

在这里插入图片描述
做一个数据库连接接口,使得数据库表和java类数据可以有机连接

(4) 数据接口连接 Database.java

package mysql;import java.sql.*;public class DataBase {private Connection con=null;public DataBase(){String url="jdbc:mysql://127.0.0.1:3306/shopping?useUnicode=true&characterEncoding=utf-8";String un="root";String pwd="123456";try{Class.forName("com.mysql.jdbc.Driver");con=DriverManager.getConnection(url, un, pwd);}catch(ClassNotFoundException e){System.out.println("ClassCastException!!!");e.printStackTrace();}catch(SQLException e){System.out.println("SQLException");e.printStackTrace();}}public ResultSet getData(String sql){Statement stm=null;try{stm = con.createStatement();ResultSet result = stm.executeQuery(sql);System.out.println("getData!!!");return result;}catch(SQLException e){System.out.println("SQLException!!!");e.printStackTrace();return null;}}public void setData(String sql){Statement stm = null;try{stm = con.createStatement();stm.executeUpdate(sql);System.out.println("setData!!!");}catch(SQLException e){System.out.println("SQLException!!!");e.printStackTrace();}finally {if(stm!=null) {try {stm.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}public void close() {try {con.close();System.out.println("con.close");} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

总结:

1.用户表单存储用户信息,验证用户是否登陆,注册.
2.在登陆后,用户拥有选购商品信息的权限,选购的商品将存储在购物车中,
3.同时商品分开显示选购衣物,水果,食品,手机信息,
4.最后,用户可以通过结算生成订单存储在数据库中,用户可以查看历史订单的成交信息

二、前端页面设计

(1)登陆界面设计

1.登陆表单整体布局为登陆头像,提交表单,还有底部显示信息
在这里插入图片描述

2.用户通过选择登陆和注册进行用户表的操作
在这里插入图片描述

3.注销,用户退出登陆.
在这里插入图片描述

4.注册界面设计
在这里插入图片描述

(2)表格设计

表格对齐,表格头部进行渲染(css),和各个表格的居中渲染,表单借鉴开源css设计网站的例程,通过一些修改,做成本次得表单由数据库获取的信息来组成表格的内容,整个表格的演示分为商品表格(衣物,食品,水果,手机),和购物车表单,历史记录表单,这些表单都是动态表单.

在这里插入图片描述

(3)导航栏设计()

1.导航栏点击主页(主页还有轮播图的效果)
在这里插入图片描述

2.单击商品栏水果
在这里插入图片描述

3.单击我的 (商品表格) 展示这个商城所有区的商品
在这里插入图片描述

4.单击我的(历史记录) ,可以查看历史订单信息

在这里插入图片描述

三、后端设计

嗯到这里描述一下主要的逻辑思路:

  1. 这个是你当前的网页: http://localhost:8082/main.jsp

  2. 这个是你页面的超链接你点击服装一下这个超链接,链接会变为http://localhost:8082/mall_cloth.goods
    在这里插入图片描述

  3. 这个时候web.xml 起作用了,这个*.goods 匹配上了咱们的servlet.GoodsServlet.java 文件,这个时候咱们这个java文件extends HttpServlet ,可以继承doget ,和dopost 方法

在这里插入图片描述
在这里插入图片描述

  1. 咱们java类做完相应的处理后,这个时候肯定要退出java了,转到html,或者jsp 页面了,比如resp.sendRedirect(req.getContextPath()+“/login.jsp”),中间的话一些传参,取参数,用到相应的函数.

基本逻辑流程就这样了

(1)Userservlet .java 实现登陆,注册,注销,确认用户是否登陆功能

1.doget 方法实现登陆,注册和确认用户是否登陆的转发

package servlet;import entity.User;
import mysql.DataBase;import javax.servlet.ServletException;
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.sql.ResultSet;
import java.sql.SQLException;public class UserServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String path = req.getServletPath();resp.setContentType("text/html;charset=utf-8");req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");if("/login.user".equals(path)){login(req,resp);}if("/register.user".equals(path)){register(req,resp);}}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String path = req.getServletPath();resp.setContentType("text/html;charset=utf-8");req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");if("/logout.user".equals(path)){logout(req,resp);}if("/check_food.user".equals(path)){check_food(req,resp);}if("/check_fruit.user".equals(path)){check_fruit(req,resp);}if("/check_mobile.user".equals(path)){check_mobile(req,resp);}if("/check_cloth.user".equals(path)){check_cloth(req,resp);}if("/check_mall.user".equals(path)){check_mall(req,resp);}}protected void register(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username=req.getParameter("username");String password=req.getParameter("password");
//		String phone=req.getParameter("phone");
//		String address=req.getParameter("address");DataBase db=new DataBase();ResultSet rs = db.getData("SELECT * FROM user where user_name='"+username+"'");try {if(rs.next()) {req.setAttribute("msg", "用户名已注册,请重新注册!!!");req.getRequestDispatcher("/register.jsp").forward(req, resp);rs.close();db.close();return;}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}String sql="insert into user(user_name,user_password) values('"+username+"','"+password+"')";db.setData(sql);resp.sendRedirect(req.getContextPath()+"/login.jsp");db.close();}protected void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username=req.getParameter("username");String password=req.getParameter("password");HttpSession session=req.getSession();DataBase db=new DataBase();ResultSet rs = db.getData("SELECT * FROM user where user_name='"+username+"' and user_password='"+password+"'");System.out.println("调试3");try {if(rs.next()) {User u=new User();u.setUsername(rs.getString("user_name"));u.setPassword(rs.getString("user_password"));
//				u.setPhone(rs.getString(3));
//				u.setAddress(rs.getString(4));session.setAttribute("user", u);System.out.println("调试2");resp.sendRedirect(req.getContextPath()+"/show.goods");System.out.println("调试1");return;}req.setAttribute("msg", "用户名或密码错误!!!");req.getRequestDispatcher("/login.jsp").forward(req, resp);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(rs!=null) {try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}db.close();}protected void logout(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {HttpSession session=req.getSession();session.invalidate();resp.sendRedirect(req.getContextPath()+"/show.goods");}protected void check_food(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {User u=(User)req.getSession().getAttribute("user");if(u==null) {resp.sendRedirect(req.getContextPath()+"/login.jsp");return;}String tag = req.getParameter("tag");if("AddCart".equals(tag)) {String index=req.getParameter("index");resp.sendRedirect(req.getContextPath()+"/add_food.cart?index="+index);}else{resp.sendRedirect(req.getContextPath()+"/show.cart");}}protected void check_fruit(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {User u=(User)req.getSession().getAttribute("user");if(u==null) {resp.sendRedirect(req.getContextPath()+"/login.jsp");return;}String tag = req.getParameter("tag");if("AddCart".equals(tag)) {String index=req.getParameter("index");resp.sendRedirect(req.getContextPath()+"/add_fruit.cart?index="+index);}else{resp.sendRedirect(req.getContextPath()+"/show.cart");}}protected void check_mobile(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {User u=(User)req.getSession().getAttribute("user");if(u==null) {resp.sendRedirect(req.getContextPath()+"/login.jsp");return;}String tag = req.getParameter("tag");if("AddCart".equals(tag)) {String index=req.getParameter("index");resp.sendRedirect(req.getContextPath()+"/add_mobile.cart?index="+index);}else{resp.sendRedirect(req.getContextPath()+"/show.cart");}}protected void check_cloth(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {User u=(User)req.getSession().getAttribute("user");if(u==null) {resp.sendRedirect(req.getContextPath()+"/login.jsp");return;}String tag = req.getParameter("tag");if("AddCart".equals(tag)) {String index=req.getParameter("index");resp.sendRedirect(req.getContextPath()+"/add_cloth.cart?index="+index);}else{resp.sendRedirect(req.getContextPath()+"/show.cart");}}protected void check_mall(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {User u=(User)req.getSession().getAttribute("user");if(u==null) {resp.sendRedirect(req.getContextPath()+"/login.jsp");return;}String tag = req.getParameter("tag");if("Del".equals(tag)) {String mall_name=req.getParameter("mall_name");String id=req.getParameter("id");resp.sendRedirect(req.getContextPath()+"/del.mall?mall_name="+mall_name+"&id="+id);}if("Update".equals(tag)){String mall_name=req.getParameter("mall_name");String id=req.getParameter("id");resp.sendRedirect(req.getContextPath()+"/update.mall?mall_name="+mall_name+"&id="+id);}}}

(2)Cartservlet.java实现购物功能

1.通过.user来跳转确认用户是否登陆,在通过转发来跳转,被Cartservlet 捕获.
在这里插入图片描述

Mall_cloth.jsp
在这里插入图片描述

Web.xml

在这里插入图片描述

单击加入购物车,显示添加成功;

购物车显示如下,可以选择继续购物或者清空购物车
在这里插入图片描述

(3)CardServlet实现商品显示功能

package servlet;import entity.Cart;
import entity.User;
import mysql.DataBase;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public class CartServlet extends HttpServlet {public static List<Cart> cart=new ArrayList<Cart>();@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String path = req.getServletPath();resp.setContentType("text/html;charset=utf-8");req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");if("/add_food.cart".equals(path)){add_food(req,resp);}if("/add_fruit.cart".equals(path)){add_fruit(req,resp);}if("/add_mobile.cart".equals(path)){add_mobile(req,resp);}if("/add_cloth.cart".equals(path)){add_cloth(req,resp);}if("/show.cart".equals(path)){show(req,resp);}if("/delete.cart".equals(path)){delete(req,resp);}}protected void add_food(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String index=req.getParameter("index");User u=(User)req.getSession().getAttribute("user");String username=u.getUsername();DataBase db=new DataBase();ResultSet rs = db.getData("SELECT * FROM mall_food where id="+index);String goodsname = "";Double price = 0.0;try {if(rs.next()) {goodsname=rs.getString("name");price=rs.getDouble("price");}else {System.out.println("获取出错!!!");}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}rs = db.getData("SELECT * FROM cart  where name='"+goodsname+"' and un='"+username+"'");try {if(rs.next()) {String sql="UPDATE cart SET number="+(rs.getInt("number")+1)+",price="+(price*(rs.getInt("number")+1))+" where name='"+goodsname+"' and un='"+username+"'";db.setData(sql);req.setAttribute("msg", "商品"+goodsname+"加入购物成成功!");req.getRequestDispatcher("/show.goods").forward(req, resp);}else {String sql="insert into cart(name,number,price,un) values('"+goodsname+"',1,'"+price+"','"+username+"')";System.out.print(sql);db.setData(sql);req.setAttribute("msg", "商品"+goodsname+"加入购物成成功!");req.getRequestDispatcher("/show_food.goods").forward(req, resp);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(rs!=null) {try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}db.close();}protected void add_fruit(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String index=req.getParameter("index");User u=(User)req.getSession().getAttribute("user");String username=u.getUsername();DataBase db=new DataBase();ResultSet rs = db.getData("SELECT * FROM mall_fruit where id="+index);String goodsname = "";Double price = 0.0;try {if(rs.next()) {goodsname=rs.getString("name");price=rs.getDouble("price");System.out.println("水果调试1"+goodsname);}else {System.out.println("获取出错!!!");}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}rs = db.getData("SELECT * FROM cart  where name='"+goodsname+"' and un='"+username+"'");try {if(rs.next()) {System.out.println("水果调试2");String sql="UPDATE cart SET number="+(rs.getInt("number")+1)+",price="+(price*(rs.getInt("number")+1))+" where name='"+goodsname+"' and un='"+username+"'";db.setData(sql);req.setAttribute("msg", "商品"+goodsname+"加入购物成成功!");req.getRequestDispatcher("/show_fruit.goods").forward(req, resp);}else {String sql="insert into cart(name,number,price,un) values('"+goodsname+"',1,'"+price+"','"+username+"')";System.out.print(sql);db.setData(sql);req.setAttribute("msg", "商品"+goodsname+"加入购物成成功!");req.getRequestDispatcher("/show_fruit.goods").forward(req, resp);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(rs!=null) {try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}db.close();}protected void add_mobile(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String index=req.getParameter("index");User u=(User)req.getSession().getAttribute("user");String username=u.getUsername();DataBase db=new DataBase();ResultSet rs = db.getData("SELECT * FROM mall_mobile where id="+index);String goodsname = "";Double price = 0.0;try {if(rs.next()) {goodsname=rs.getString("name");price=rs.getDouble("price");}else {System.out.println("获取出错!!!");}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}rs = db.getData("SELECT * FROM cart  where name='"+goodsname+"' and un='"+username+"'");try {if(rs.next()) {String sql="UPDATE cart SET number="+(rs.getInt("number")+1)+",price="+(price*(rs.getInt("number")+1))+" where name='"+goodsname+"' and un='"+username+"'";db.setData(sql);req.setAttribute("msg", "商品"+goodsname+"加入购物成成功!");req.getRequestDispatcher("/show_mobile.goods").forward(req, resp);}else {String sql="insert into cart(name,number,price,un) values('"+goodsname+"',1,'"+price+"','"+username+"')";System.out.print(sql);db.setData(sql);req.setAttribute("msg", "商品"+goodsname+"加入购物成成功!");req.getRequestDispatcher("/show_mobile.goods").forward(req, resp);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(rs!=null) {try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}db.close();}protected void add_cloth(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String index=req.getParameter("index");User u=(User)req.getSession().getAttribute("user");String username=u.getUsername();DataBase db=new DataBase();ResultSet rs = db.getData("SELECT * FROM mall_cloth where id="+index);String goodsname = "";Double price = 0.0;try {if(rs.next()) {goodsname=rs.getString("name");price=rs.getDouble("price");}else {System.out.println("获取出错!!!");}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}rs = db.getData("SELECT * FROM cart  where name='"+goodsname+"' and un='"+username+"'");try {if(rs.next()) {String sql="UPDATE cart SET number="+(rs.getInt("number")+1)+",price="+(price*(rs.getInt("number")+1))+" where name='"+goodsname+"' and un='"+username+"'";db.setData(sql);req.setAttribute("msg", "商品"+goodsname+"加入购物成成功!");req.getRequestDispatcher("/show_cloth.goods").forward(req, resp);}else {String sql="insert into cart(name,number,price,un) values('"+goodsname+"',1,'"+price+"','"+username+"')";System.out.print(sql);db.setData(sql);req.setAttribute("msg", "商品"+goodsname+"加入购物成成功!");req.getRequestDispatcher("/show_cloth.goods").forward(req, resp);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(rs!=null) {try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}db.close();}protected void show(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {User u=(User)req.getSession().getAttribute("user");String username=u.getUsername();DataBase db=new DataBase();ResultSet rs = db.getData("SELECT * FROM cart where un='"+username+"'");try {while(rs.next()) {Cart c=new Cart();c.setGoodsname(rs.getString("name"));c.setNumber(rs.getInt("number"));c.setPrice(rs.getDouble("price"));c.setUsername(username);cart.add(c);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(rs!=null) {try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}req.setAttribute("cart", cart);System.out.println("添加购物车调试接口4");req.getRequestDispatcher("/cart1.jsp").forward(req, resp);System.out.println("添加购物车调试接口5");cart.clear();db.close();}protected void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {DataBase db=new DataBase();String type=req.getParameter("type");//清空if("All".equals(type)) {String sql="DELETE FROM cart";db.setData(sql);resp.sendRedirect(req.getContextPath()+"/show.cart");}//删除某个else {String goodsname=req.getParameter("goodsname");byte[] b=goodsname.getBytes("ISO8859-1");goodsname=new String(b,"utf-8");
//			这里取得的编码是utf-8不做处理,tomcat版本不同返回的值编码可能不一样,如果中文乱码,则对编码进行处理String sql="DELETE FROM cart WHERE name='"+goodsname+"'";db.setData(sql);resp.sendRedirect(req.getContextPath()+"/show.cart");}db.close();}}

1.导航栏超链接如下
在这里插入图片描述

2.Web.xml 做一个映射,捕捉.goods 的请求
在这里插入图片描述

3.对.good 请求进行一个转化,并在主类中声明主类的数据存储

在这里插入图片描述

4.对不同的请求转发进行数据处理数(数据库请求)
在这里插入图片描述

5.请求数据库,并将数据进行转发给对应的jsp页面
在这里插入图片描述

6.Jsp 页面捕获这些数据进行显示
<%
List goods=(List)request.getAttribute(“goods”);
User u=(User)session.getAttribute(“user”);
%>

在这里插入图片描述

(4)OrderServlet.java 订单生成,历史订单查询

购物车页面订单生成,在确认区生成订单,订单数据会存储在数据库中.
在这里插入图片描述

查看历史订单:
在这里插入图片描述

查看订单信息
在这里插入图片描述

同样是路由转发,执行数据库操作,显示数据
在这里插入图片描述

package servlet;import entity.Cart;
import entity.Order;
import entity.User;
import mysql.DataBase;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;public class OrderServlet extends HttpServlet {public static List<Cart> cart=new ArrayList<Cart>();//备份cart 生成订单时用public static List<Cart> cart_=new ArrayList<Cart>();//订单号 listpublic static List<String> OrderId = new ArrayList<String>();//订单详情 Listpublic static List<Order> order = new ArrayList<Order>();//时间+随机数public static String getOrderIdByTime() {SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");String newDate=sdf.format(new Date()); String result="";Random random=new Random();for(int i=0;i<3;i++) {result+=random.nextInt(10);}return newDate+result;}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String path = req.getServletPath();resp.setContentType("text/html;charset=utf-8");req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");if("/confirm.order".equals(path)){confirm(req,resp);}if("/generate.order".equals(path)){generate(req,resp);}if("/showOrders.order".equals(path)){showOrders(req,resp);}if("/detail.order".equals(path)){detail(req,resp);}}//订单详情protected void detail(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String OrderId=req.getParameter("id");DataBase db=new DataBase();ResultSet rs = db.getData("SELECT * FROM order_ where id='"+OrderId+"'");try {while(rs.next()) {Order o=new Order();o.setUsername(rs.getString("un"));o.setGoodsname(rs.getString("goodsname"));o.setNumber(rs.getInt("number"));o.setPrice(rs.getDouble("price"));o.setId(OrderId);order.add(o);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(rs!=null) {try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}req.setAttribute("order", order);req.getRequestDispatcher("orderDetail.jsp").forward(req, resp);order.clear();db.close();}//查询历史订单protected void showOrders(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {DataBase db=new DataBase();User u=(User)req.getSession().getAttribute("user");ResultSet rs = db.getData("SELECT distinct id FROM order_ where un='"+u.getUsername()+"' ");try {while(rs.next()) {String id=rs.getString("id");OrderId.add(id);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(rs!=null) {try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}req.setAttribute("OrderId", OrderId);req.getRequestDispatcher("historyOrders.jsp").forward(req, resp);OrderId.clear();db.close();}//生成订单protected void generate(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String id=getOrderIdByTime();User u=(User)req.getSession().getAttribute("user");String username=u.getUsername();DataBase db=new DataBase();for(Cart c:cart_) {String sql="insert into order_(id,un,goodsname,number,price) values('"+id+"','"+username+"','"+c.getGoodsname()+"',"+c.getNumber()+","+c.getPrice()+")";db.setData(sql);}db.setData("DELETE FROM cart");req.setAttribute("id", id);req.getRequestDispatcher("success.jsp").forward(req, resp);cart_.clear();db.close();}//确认订单protected void confirm(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {User u=(User)req.getSession().getAttribute("user");String username=u.getUsername();DataBase db=new DataBase();ResultSet rs = db.getData("SELECT * FROM cart where un='"+username+"'");try {while(rs.next()) {Cart c=new Cart();c.setGoodsname(rs.getString(1));c.setNumber(rs.getInt(2));c.setPrice(rs.getDouble(3));c.setUsername(username);cart.add(c);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(rs!=null) {try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}req.setAttribute("cart", cart);req.getRequestDispatcher("order.jsp").forward(req, resp);//备份 cartcart_.clear();cart_.addAll(cart);//清空cart.clear();db.close();}}



http://chatgpt.dhexx.cn/article/CZM3WHsd.shtml

相关文章

javascript购物车实现详细代码讲解

我们肯定都很熟悉商品购物车这一功能&#xff0c;每当我们在某宝某东上购买商品的时候&#xff0c;看中了哪件商品&#xff0c;就会加入购物车中&#xff0c;最后结算。购物车这一功能&#xff0c;方便消费者对商品进行管理&#xff0c;可以添加商品&#xff0c;删除商品&#…

JSP(6)简单购物车实现

两个jsp页面之间跳转需要通过Servlet控制器实现 1 创建数据库表 -- 创建一个序列&#xff0c;使book的id自增长 create sequence book_seq start with 1 increment by 1 minvalue 1 maxvalue 99999999999999 nocycle nocache -- 创建一个序列&#xff0c;使orders的id自增长…

用JSP实现的商城购物车模块

这两天&#xff0c;在学习JSP&#xff0c;正好找个小模块来练练手&#xff1a; 以下就是实现购物车模块的页面效果截图&#xff1a; 图1. 产品显示页面 通过此页面进行产品选择&#xff0c;加入到购物车 图2 .购物车页面 图3 . 商品数量设置 好了&#xff0c;先不贴图了&#x…

项目-Java Web购物车-JSP实现

文章目录 源码地址界面演示目录结构准备工作登录注册功能定义DaoBaseDaoProductDaoImp 定义EntityProductCartItem 商品列表与详情界面★购物车页面更多 源码地址 点击文章底部打赏后私信发送源码地址 界面演示 介绍(旧) 浏览器打开http://localhost:8080/ShopCart/login.j…

jsp购物车(session版)

目录 一、要用到的 js 和 css 文件 二、数据库表实体类Dao类 1、数据库表 2、实体类 3、Dao类方法(GoodsDao) 四、商品主页面&#xff08;index.jsp&#xff09; 1、代码分析 2、完整代码 五、购物车页面&#xff08;spcar.jsp&#xff09; 1、代码分析 2、完整代码 3、删除…

jsp实现购物车

文章目录 一、案例演示二、实现步骤1.info.jsp2.UserServlet3.cart.jsp4.UserServlet 一、案例演示 点击购买进入到购物车页面&#xff0c;增加减少数量都会对小计&#xff0c;总计产生影响&#xff0c;点击继续购买&#xff0c;回到挑选页面product_list.jsp 二、实现步骤 …

图像识别技术

图像识别算法实现收藏 <script type"text/javascript"></script> <script></script> 以往的图像处理函数实现&#xff0c;多是针对图像句柄。算法实现 需要操作复杂的图像文件。 但是&#xff0c;这种方式算法实现和调试的周期比较长。为了加…

神经网络图像识别算法,神经网络提取特征值

哪些神经网络可以用在图像特征提取上 BP神经网络、离散Hopfield网络、LVQ神经网络等等都可以。 1.BP&#xff08;BackPropagation&#xff09;神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出&#xff0c;是一种按误差逆传播算法训练的多层前馈网络&#xff0c;…

基于神经网络的图像识别

一、目的 1. 了解深度学习的基本原理&#xff1b; 2. 能够使用 PaddleHub 深度学习开源工具进行图像识别&#xff1b; 3. 能够使用 PaddlePaddle 训练神经网络模型&#xff1b; 4. 能够使用 Paddle 完成手写实验. 5. 能够使用 keras 训练神经网络模型。 二、环境配置&#xff1…

机器学习决策树算法解决图像识别

算法介绍 什么是决策树算法 决策树又称判定树&#xff0c;是一个类似于流程图的树结构&#xff1a;其中&#xff0c;每个内部结点表示在一个属性上的测试&#xff0c;每个分支代表一个属性输出&#xff0c;而每个树叶结点代表类或类分布。树的最顶层是根结点。 构造决策树的基…

opencv 图像识别

opencv的目标是使计算机可以快速准确地从数字图像中提取和分析特征。它使用了许多新的算法和技术&#xff0c;例如改进的模板匹配、基于统计的特征分析以及深度学习等。opencv支持多种平台&#xff0c;包括 Windows、 MacOS、 Linux和 Android&#xff0c;开发者可以使用 OpenC…

图像识别算法(二)

一、线性分类器 线性分类器&#xff08;Linear Classification&#xff09;是比KNN分类器更有效的一种分类器。这个方法有两个重要的部分&#xff1a;分数函数&#xff08;score function&#xff09;和损失函数&#xff08;loss function&#xff09;。分数函数是江原始数据匹…

基于KNN算法的图像识别

你需要完成一个图像识别的任务&#xff0c;主要使用的模型是KNN算法。使用的数据集是cifar-10&#xff0c;是图像识别领域最为经典的数据及之一。具体的数据可以从以下的链接下载&#xff1a; https://www.cs.toronto.edu/~kriz/cifar.html&#xff0c; 下载之后把是数据集解压…

opencv图像算法

图像的对比度增强 一&#xff1a; 绘制直方图 就是把各个像素值所含有的个数统计出来&#xff0c;然后画图表示。 可以看到在当前图像中&#xff0c;哪个像素值的个数最多。 同时&#xff0c;可以看当前图像总体的像素值大小在哪些范围。。靠近0的话&#xff0c;说明图像偏暗…

图像识别中的深度学习

图像识别中的深度学习 来源&#xff1a;《中国计算机学会通讯》第8期《专题》 作者&#xff1a;王晓刚 深度学习发展历史 深度学习是近十年来人工智能领域取得的重要突破。它在语音识别、自然语言处理、计算机视觉、图像与视频分析、多媒体等诸多领域的应用取得了巨大成功。现有…

图像识别

图像识别主要用到了两个第三方的iOS框架&#xff1a;OpenCV和TesseractOCR&#xff0c;OpenCV用来做图像处理&#xff0c;定位到身份证号码的区域&#xff0c;TesseractOCR则是对定位到的区域内的内容进行识别。 OpenCV中的一些简单的处理图像的方法&#xff1a;灰度处理、二…

深度学习与图像识别 图像检测

主要做了基于深度学习的图像识别与检测的研究&#xff0c;下面是一些整理内容 1、深度学习的优势 &#xff08;1&#xff09;从统计&#xff0c;计算的角度看&#xff0c;DL特别适合处理大数据 a、用较为复杂的模型降低模型偏差 b、用大数据提升统计估计的准确度 c、用可扩展的…

人工智能-图像识别

图像识别技术是信息时代的一门重要的技术&#xff0c;其产生目的是为了让计算机代替人类去处理大量的物理信息。随着计算机技术的发展&#xff0c;人类对图像识别技术的认识越来越深刻。图像识别技术的过程分为信息的获取、预处理、特征抽取和选择、分类器设计和分类决策。简单…

神经网络图像识别算法,神经网络图像识别技术

目前进行图像处理,通常使用什么神经网络 谷歌人工智能写作项目&#xff1a;小发猫 数字图像处理的主要方法 数字图像处理的工具可分为三大类&#xff1a;第一类包括各种正交变换和图像滤波等方法&#xff0c;其共同点是将图像变换到其它域&#xff08;如频域&#xff09;中进…

人工智能中的图像识别技术

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶” 重磅干货&#xff0c;第一时间送达 伴随着图像处理技术的飞速发展&#xff0c;推动了图像识别技术的产生和发展&#xff0c;并逐渐成为人工智能领域中重要的组成部分&#xff0c;并广泛地运用于面部识别、…