iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JavaWeb实战之开发网上购物系统(超详细)
  • 864
分享到

JavaWeb实战之开发网上购物系统(超详细)

2024-04-02 19:04:59 864人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录一、项目描述二、项目演示三、部分代码一、项目描述 基于B/S三层架构设计的购物系统,可以更好地符合"高内聚,低耦合"的设计思想。表现层(UI)通过jsP在浏览器上实现界面展示,通

一、项目描述

基于B/S三层架构设计的购物系统,可以更好地符合"高内聚,低耦合"的设计思想。表现层(UI)通过jsP在浏览器上实现界面展示,通过Servlet接受用户请求并生成验证码等实时信息;数据访问层(DAL)通过JDBC对DBMS进行访问;二者之间的业务逻辑层(BLL)通过Service进行连接。同时面向接口编程提高规范化。这只是我自己用两三天的时间做的小项目,距离真正的购物系统差距还是很大的,仅供初学者参考,很多逻辑缺陷不必太纠结,以后有时间会再写一篇博客对这个项目进行相关测试

如果只需要代码可直接通过书签栏跳转至相关文件。

二、项目演示

这是购物系统首页,是仿照华为商城设计的,当然也可以说是仿照小米商城,这二者的页面设计并无本质区别,具体实现借助于Bootstrap,商品信息通过后台数据库读取,商品表见下

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

点击任意商品进入详情界面

在这里插入图片描述

如果此时点击加入购物车会调用Servlet中的doPost方法,进而通过登陆信息是否读取成功判断登陆状态,如果未登录则转至登录界面并提示相关信息,背景渐变色借助于WEBgradients选取,同时实现正则验证与验证码相关功能

在这里插入图片描述

我们先注册再登录,这里注册洛的相关信息

在这里插入图片描述

注册成功

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

之后我们登录并将心仪的商品加入购物车,查看购物车,这里会一致显示当前登录用户信息

在这里插入图片描述

提交订单后查看订单,这里借助Jquery做了一个下拉框,可以查看后台数据库关于此订单的全部信息,这里提交订单相当于付款,所以未设退货功能,因此数据删除只能借助于后台数据库。

在这里插入图片描述

最后点击注销返回主页

在这里插入图片描述

三、部分代码

JdbcUtils.java

用于加载驱动并获得与数据库的连接的工具


package common;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JdbcUtil {
	static Connection connection;
	public static Connection getCon() {
		//加载驱动
		try {
			Class.forName("com.Mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		String url = "jdbc:mysql://localhost:3306/shoppingsystem?characterEncoding=utf-8";
		String username = "root";
		String passWord = "123";
		
		//获得连接
		try {
			connection = DriverManager.getConnection(url, username, password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return connection;
	}
	public static void closeAll(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) {
		if (resultSet != null) {
			try {
				resultSet.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (preparedStatement != null) {
			try {
				preparedStatement.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (connection != null) {
			try {
				connection.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}
、

People.java

与数据库中用户表相匹配的用户类


package entity;

public class People {
	private String id;
	private String password;
	private String name;
	private String email;
	private String address;
	
	public People() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	public People(String id, String password, String name, String email, String address) {
		super();
		this.id = id;
		this.password = password;
		this.name = name;
		this.email = email;
		this.address = address;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	@Override
	public String toString() {
		return "People [id=" + id + ", password=" + password + ", name=" + name + ", email=" + email + ", address="
				+ address + "]";
	}
	
}

InterfacePeopleDao.java

对用户信息进行相关操作的接口


package dao;

import java.util.List;

import entity.People;

public interface InterfacePeopleDao {
	public abstract int insertPeople(String id, String password, String name, String email, String address);
	
	public abstract int deletePeople(String id);
	
	public abstract int updatePeople(String id, String password, String name, String email, String address);
	
	public abstract People checkPeople(String id, String password);
	
	public abstract List<People> findAllPeople();
}

PeopleDao.java

对上述接口的实现


package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import common.JdbcUtil;
import entity.People;

public class PeopleDao implements InterfacePeopleDao {
	private Connection connection;
	private PreparedStatement preparedStatement;
	private ResultSet resultSet;

	@Override
	public int insertPeople(String id, String password, String name, String email, String address) {
		String sql = "mistake";
		if (id != "" && password != "" && name != "" && email != "" && address != "") {
			sql = "insert into people (id, password, name, email, address)" + "values('" + id + "','" + 
					password + "','" + name + "','" + email + "','" + address + "');";
		}
		System.out.println("insertPeople()的sql语句:" + sql);
		
		int result = 0;
		connection = JdbcUtil.getCon();
		try {
			preparedStatement = connection.prepareStatement(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		try {
			result = preparedStatement.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		JdbcUtil.closeAll(connection, preparedStatement, resultSet);
		return result;
	}

	@Override
	public int deletePeople(String id) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int updatePeople(String id, String password, String name, String email, String address) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public People checkPeople(String id, String password) {
		String sql = null;
		if (id != null && password != null) {
			sql = "select * from people where id = '" + id + "' and password = '" + password + "'";
		}
		System.out.println("checkPeople()的sql语句:" + sql);
		
		People people = null;
		connection = JdbcUtil.getCon();
		try {
			preparedStatement = connection.prepareStatement(sql);
			resultSet = preparedStatement.executeQuery();
			if (resultSet.next()) {
				people = new People();
				people.setId(resultSet.getString(1));
				people.setPassword(resultSet.getString(2));
				people.setName(resultSet.getString(3));
				people.setEmail(resultSet.getString(4));
				people.setAddress(resultSet.getString(5));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			JdbcUtil.closeAll(connection, preparedStatement, resultSet);
		}
		return people;
	}

	@Override
	public List<People> findAllPeople() {
		// TODO Auto-generated method stub
		return null;
	}

}

InterfacPeopleService.java

在业务逻辑层中将表现层与数据访问层进行连接,由于项目本身并不复杂,所以只是简单实现了方法传递


package service;

import java.util.List;

import entity.People;

public interface InterfacePeopleService {
	public abstract int insertPeople(String id, String password, String name, String email, String address);
	
	public abstract int deletePeople(String id);
	
	public abstract int updatePeople(String id, String password, String name, String email, String address);
	
	public abstract People checkPeople(String id, String password);
	
	public abstract List<People> findAllPeople();
}

PeopleService.java

对上述接口的实现


package service;

import java.util.List;

import dao.InterfacePeopleDao;
import dao.PeopleDao;
import entity.People;

public class PeopleService implements InterfacePeopleService {
	private InterfacePeopleDao peopleDao;
	
	public PeopleService() {
		peopleDao = new PeopleDao();
	}

	@Override
	public int insertPeople(String id, String password, String name, String email, String address) {
		return peopleDao.insertPeople(id, password, name, email, address);
	}

	@Override
	public int deletePeople(String id) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public int updatePeople(String id, String password, String name, String email, String address) {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public People checkPeople(String id, String password) {
		return peopleDao.checkPeople(id, password);
	}

	@Override
	public List<People> findAllPeople() {
		// TODO Auto-generated method stub
		return null;
	}

}

CheckCode.java

在内存中生成验证码图片并输出到客户端


package servlet;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
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;

@WebServlet("/CheckCode")
public class CheckCode extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static int width=70;
    private static int height=25;
       
	public CheckCode() {
		super();
		// TODO Auto-generated constructor stub
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		HttpSession session=request.getSession();
		response.setContentType("image/jpeg");// 设置生成的文档类型为jpg
		ServletOutputStream servletOutputStream = response.getOutputStream();
		
		
		response.setHeader("Pragma", "No-cache");
		response.setHeader("Cache-Control", "no-cache");
		response.setDateHeader("Expires", 0);
		
		
		BufferedImage image=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		Graphics graphics=image.getGraphics();
		
		char[] rands=generCode();// 产生随机的验证码
		drawRands(graphics, rands);// 产生图像
		graphics.dispose();// 结束图像的绘制过程,完成图像
		
		
		ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
		ImageIO.write(image, "jpeg", byteArrayOutputStream);
		byte[] buf=byteArrayOutputStream.toByteArray();
		response.setContentLength(buf.length);
		servletOutputStream.write(buf);
		byteArrayOutputStream.close();
		servletOutputStream.close();
		
		session.setAttribute("checkcode", new String(rands));// 将当前的验证码写入到session中	
		
	}
	
	private char[] generCode() {
    	//定义验证码的字符表
    	String chars="0123456789";
    	char[] rands=new char[5];
    	for(int i=0;i<5;i++) {
    		int rand=(int)(Math.random()*10);
    		rands[i]=chars.charAt(rand);
    	}
    	return rands;
    }
	
	private void drawRands(Graphics g,char[] rands) {
		g.setColor(Color.WHITE);
		g.setFont(new Font(null, Font.ITALIC|Font.BOLD, 18));
		
		
		g.drawString("" + rands[0], 0, 18);
		g.drawString("" + rands[1], 14, 18);
		g.drawString("" + rands[2], 28, 18);
		g.drawString("" + rands[3], 42, 18);
		g.drawString("" + rands[4], 56, 18);
		System.out.print("当前验证码:");
		System.out.println(rands);
	}

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

}

到此这篇关于Java实战之利用Javaweb开发购物系统(超详细)的文章就介绍到这了,更多相关javaweb购物系统内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaWeb实战之开发网上购物系统(超详细)

本文链接: https://www.lsjlt.com/news/124243.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaWeb实战之开发网上购物系统(超详细)
    目录一、项目描述二、项目演示三、部分代码一、项目描述 基于B/S三层架构设计的购物系统,可以更好地符合"高内聚,低耦合"的设计思想。表现层(UI)通过JSP在浏览器上实现界面展示,通...
    99+
    2024-04-02
  • Android App开发实战项目之购物车(附源码 超详细必看)
    需要源码请点赞关注收藏后评论区留言~~~ 一、需求描述 电商App的购物车可谓是司空见惯了,可以知道购物车除了底部有一个结算行,其余部分主要是已加入购物车的商品列表,然后每个商品左边是商品小图,右边是商品名称以及价格,第一次进入购物车...
    99+
    2023-09-02
    android 数据库 android studio java 学习
  • JavaWeb购物车项目开发实战指南
    目录一、项目前提二、数据库的创建三、eclipse进行创建包和类:四、主要实现功能1、购物车用户登录2、商品显示3、购物车添加&商品总数和价格的计算总结一、项目前提 1、购物...
    99+
    2024-04-02
  • Javaweb实战之实现蛋糕订购系统
    目录视频展示1实验的目的及要求2需求分析2.1问题陈述2.2功能需求分析3总体设计3.1功能结构图设计3.2模块简介4详细设计4.1主模块详细设计4.2子模块详细设计5编码和测试5....
    99+
    2024-04-02
  • python实现网上购物系统
    本文实例为大家分享了python实现网上购物系统的具体代码,供大家参考,具体内容如下 1.购物商城的需求分析: 1、输出欢迎界面还有登录注册菜单: 1).登陆 2).注册  ...
    99+
    2024-04-02
  • 基于PHP的网络购物系统开发
    近年来,随着电子商务的快速发展,网络购物已成为人们日常生活中不可或缺的一部分。越来越多的人选择在网上购买商品,这种趋势也促使许多企业开发自己的网络购物系统,以满足消费者日益增长的需求。本文将讨论基于PHP的网络购物系统的开发过程。在开发基于...
    99+
    2023-10-27
    PHP开发 系统开发 网络购物
  • Java 实战项目之家居购物商城系统详解流程
    一、项目简述 功能: Java Web精品项目源码,家居商城分类展示,商品展示, 商品下单,购物车,个人中心,后台管理,用户管理,商品管理,分类管理等等。 二、项目运行 环境配置: ...
    99+
    2024-04-02
  • JavaWeb实现学生管理系统的超详细过程
    目录一、项目介绍二、项目结构三、前期准备1.配置maven环境,在pom.xml配置文件中配置项目所依赖的jar包2.在MySql数据库中,创建登录注册表login和学生信息表stu...
    99+
    2023-05-19
    javaweb学生成绩管理系统 javaweb学生管理系统 javaweb用户管理系统
  • Python 实战开发校园管理系统详细流程
    Python 现在开发一套校园管理系统,包含各种人员,如教师、学生等。学校的系统通常还包括一些课程的信息 例如,现在开发一套校园管理系统,包含各种人员,如教师、学生等。学校的系统通...
    99+
    2024-04-02
  • Java实战之实现物流配送系统示例详解
    目录介绍效果图展示主要实现代码介绍 系统分普通用户、企业、超级管理员等角色,除基础脚手架外,实现的功能有: 超级管理员:系统管理、用户管理、企业用户管理、普通用户管理、货物类型管理、...
    99+
    2024-04-02
  • Android App开发实战之实现微信记账本(附源码 超详细必看)
    需要源码或图片集请点赞关注收藏后评论区留言~~~ 一、需求描述 好用的记账本必须具备两项基本功能。一项时记录新帐单,另一项时查看账单列表,其中账单的记录操作要求用户输入账单的明细要素,包括账单的发生时间,账单的收支类型,账单的交易金额...
    99+
    2023-09-09
    android 微信 android studio java ide
  • Java超详细教你写一个网络购书系统案例
    目录一、购书系统1.前言2.功能介绍3.分析二、图书类(Book)1.类名及属性2.代码示例三、订单项类(OrderItem)1.类名及属性2.代码示例四、订单类(Order)1.类...
    99+
    2024-04-02
  • JAVA实战项目实现客户选购系统详细流程
    客户选购信息系统功能需求: 1)输入多个客户购买商品信息。包括客户名称,年龄,购买的商品,每种商品的单价和数量。 2)输出多个客户购买商品的信息。包括客户名字,年龄,购买商品,每种商...
    99+
    2024-04-02
  • Java实战之网上书店管理系统的实现
    目录1.效果展示2.需求功能3.系统总体设计及部分代码3.1登录模块设计3.2新用户的注册3.3图书添加模块3.4图书添加事件3.5买家信息维护3.6订单管理模块4.数据库设计4.1...
    99+
    2024-04-02
  • Go语言开发点餐系统中的购物车功能详解
    Go语言开发点餐系统中的购物车功能详解引言:随着电子商务的蓬勃发展,点餐系统已经成为了餐饮行业的重要组成部分。而购物车功能则是点餐系统中不可或缺的一部分。本文将详细介绍在使用Go语言开发点餐系统时,如何实现购物车功能,并给出具体的代码示例。...
    99+
    2023-11-01
    Go语言 购物车 点餐系统
  • 网上商城购物系统设计与实现(Java+Web+SSM+MySQL)
    目 录 1 绪论 1 1.1 研究背景 1 1.2 目的和意义 1 1.3 开发工具及技术 1 2 需求分析 3 2.1 功能需求分析 3 2.1.1 网站前台功能 3 2.1.2 网站后台功能 3 ...
    99+
    2023-08-31
    java mysql SSM 购物商城系统 毕业设计
  • PHP开发买菜系统的购物车功能实现方法
    随着网络购物的不断发展,购物车成了一个不可或缺的功能,买菜系统也不例外,购物车在其中也显得极其重要和实用。本文将介绍如何利用PHP开发买菜系统的购物车功能实现方法。一. 购物车数据的存储方法购物车的本质是一个容器,需要在其中存储商品的信息,...
    99+
    2023-11-01
    实现方法 PHP开发 购物车功能
  • PHP实战:开发一个网络图书馆系统
    PHP实战:开发一个网络图书馆系统随着科技的发展和人们生活水平的提高,网络图书馆系统的发展也变得越来越重要。一个网络图书馆系统可以让用户方便地访问和借阅书籍,同时也方便管理员管理图书的流通和归还。PHP作为一种常用的服务器端脚本语言,为开发...
    99+
    2023-10-27
    PHP开发 实战 网络图书馆
  • Java 实战项目锤炼之网上商城系统的实现流程
    一、项目简述(+需求文档+PPT) 功能: 主页显示热销商品;所有商品展示,可进行商品搜索;点 击商品进入商品详情页,显示库存,具有立即购买和加入 购物车功能,可增减购买商品数量亦可...
    99+
    2024-04-02
  • Java实战之小蜜蜂扩音器网上商城系统的实现
    目录一、项目简述二、项目运行三、效果图四、核心代码用户管理控制层订单管理控制层品类控制层产品控制层一、项目简述 用户功能模块: 用户注册: 用户登录:商品模块:订单模块;后台管理系统...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作