【JAVAWEB开发】基于Java+Servlet+Ajax+jsp网上购物系统设计实现

2023-11-01

哈喽~大家好呀,这篇给的大家带来的是网上购物系统设计。在传统电商时代,用户是先有需求再购买,用户对平台较为依赖,商家对消费者很难有直接的影响力,而如今社交 + 电商解决了产品质量的信息不对称问题,电商已经成为当今经济发展的一个重要领域。而网上购物就是实现之一,现在我们就来看看吧。

一、效果演示

1、首页界面

 如果没有登录,就只能查看无法购买

2、商品界面

 3、商品详情界面

 4、购物车界面

 5、购物订单界面

 6、交易成功界面

 7、个人订单界面

8、个人收藏界面

 9、管理员界面

 10、全部订单界面

 11、全部收藏界面

 二、数据库设计

数据库定义:数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。

用户表(user):字段(id,用户名,密码,电话,邮箱)

购物车表(shopping_cart):字段(id,用户名,商品名,价格,购买数量,总价,图片地址)

订单表(order):字段(id,商品名,邮箱,用户名,收货地址,收货电话)

商品详情表(goods_parameters):字段(id,商品类型,图片地址)

商品类型(favorite):字段(id,商品类型名)

商品表(user):字段(id,商品名,商品类型名,价格,图片地址,销量,库存)

收藏表(favorite):字段(id,用户名,商品名,价格,图片地址)

历史记录表(browsinghistory):字段(id,记录名,记录价格,记录图片地址)、

品牌表(brand):字段(id,用户名,品牌类型,品牌名)

三、部分代码展示

登录展示

    <div class="registerarea ">
        <!-- 注册表头部 -->
        <h4>登录账号
            <div class="login"> 没有账号,去<a href="register.jsp" class="style_red">注册</a> &nbsp;&nbsp; <a href="retrievePassword.jsp">忘记密码?点击找回</a></div>
        </h4>
        <!-- 注册表身体 -->
        <div class="reg_form">
            <form action="/EasybuyProject/loginServlet" class="submit" method="post">
                <ul class="clearfix:after">
                    <li>
                        <label>账号:</label> <input type="text" class="inp username" name="username">
                        <span class="error">格式错误,应为长度6-20并含有大小写字母数字</span>
                        <font color="red">
                            <%
                                if(session.getAttribute("messageLogin")!= null){
                                    out.print(session.getAttribute("messageLogin"));
                                    session.invalidate();
                                }
                            %>
                        </font>


                    </li>

                    <li>
                        <label>密码:</label> <input type="password" class="inp password" name="password">
<%--                        <span class="error">格式错误,应为长度6-20并含有大小写字母数字</span>--%>
                    </li>
                    <li>
                        <input type="submit" class="inputButton" value="登录"> &nbsp;&nbsp;
                        <input type="reset" value="重置" class="inputButton">
                    </li>
                </ul>
            </form>
        </div>
    </div>

正则验证

    <script>
        $(document).ready(function () {
            $(function () {
                var flagUser = false
                var flagPwd = false

                var $user_name = $('.username')
                var $pwd = $('.password')

                $user_name.blur(function () {
                    var vals = $user_name.val();
                    var reg = /^[a-zA-Z0-9\_]{6,20}$/;
                    if (reg.test(vals)) {
                        $user_name.next().hide();
                        flagUser = true;
                    } else {
                        // $user_name.next().show().css("z-index","2").html('用户名是6-20位数字、字母和下划线!');
                        $user_name.next().show();
                        flagUser = false;
                    }
                })

                $pwd.blur(function () {
                    var vals = $pwd.val();
                    var reg = /^[a-zA-Z0-9\_]{6,20}$/;

                    if (reg.test(vals)) {
                        $pwd.next().hide();
                        flagPwd = true;
                    } else {
                        $pwd.next().show();
                        flagPwd = false;
                    }
                })

            })
        })
    </script>

Servlet

@WebServlet("/EasybuyProject/loginServlet")
public class LoginServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.setCharacterEncoding("utf8");
        resp.setCharacterEncoding("utf8");
        resp.setContentType("text/html;charset=UTF-8");

        String username = req.getParameter("username");
        String password = req.getParameter("password");

        UserService userService = new UserServiceImpl();
        User user = userService.login(username, password);

        HttpSession session = req.getSession();

        if (user != null && (!Objects.equals(username, "XzwadminNo1")) && !Objects.equals(password, "XzwadminNo1")) {
            resp.sendRedirect("/FrontPage/index.jsp");
            session.setAttribute("success",username);
        } else if(Objects.equals(username, "XzwadminNo1") && Objects.equals(password, "XzwadminNo1")){
            session.setAttribute("success",username);
            resp.sendRedirect("/FrontPage/indexAdmin.jsp");
        } else {
            session.setAttribute("messageLogin","用户名或者密码错误");
            resp.sendRedirect("/FrontPage/login.jsp");
        }

    }

}

实体类

public class User {

    private int id;
    private String username;
    private String password;
    private String tel;
    private String email;

    public User() {
    }

    public User(String tel, String email) {
        this.tel = tel;
        this.email = email;
    }

    public User(int id, String username, String password, String tel, String email) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.tel = tel;
        this.email = email;
    }

    public int getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

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

    public String getTel() {
        return tel;
    }

    public void setTel(String tel) {
        this.tel = tel;
    }

    public String getEmail() {
        return email;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", tel='" + tel + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

Dao

    public User login(String username, String password) {
        User user = null;
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        try {
            connection = JdbcUtil.getConnection();
            String sql = "select * from user where username = ? and password= ?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, username);
            preparedStatement.setString(2, password);

            resultSet = preparedStatement.executeQuery();
            if (resultSet.next()) {
                user = new User();
                user.setUsername(resultSet.getString("username"));
                user.setPassword(resultSet.getString("password"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JdbcUtil.release(resultSet, preparedStatement, connection);
        }
        return user;
    }

效果展示

源码获取见公众号

不积跬步无以至千里,趁年轻,使劲拼,给未来的自己一个交代!向着明天更好的自己前进吧!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【JAVAWEB开发】基于Java+Servlet+Ajax+jsp网上购物系统设计实现 的相关文章

  • 如何在 Java 中验证从 Azure AD B2C 生成的 JWT 令牌?

    我正在寻找 Java 代码示例来验证 Azure AD B2C 令牌 我们可以使用哪些依赖项 所有 JWT 令牌的 JWT 令牌验证步骤或代码是否相同还是会有所不同 我们的项目中没有使用 Spring Security 有大量的图书馆her
  • SWT:如何进行高质量图像调整大小

    我的应用程序需要调整 ImageData 的大小 不幸的是 我还没有通过 GC 开启抗锯齿和高插值 或 ImageData scaledTo 获得我想要的结果 生成的图像质量太低 无法接受 进行高质量 ImageData 调整大小的最佳方法
  • 将倒计时器从 10 秒改为 1 秒

    我有一个倒计时器 它以 1 秒的增量从 10000 毫秒倒计时到 0 毫秒 以使按钮在 10 秒后可单击 尽管计时器是准确的并且按照代码的说明执行操作 但我想更改秒的表示方式 但我不知道如何更改 java void startTimer c
  • 如何将 ArrayList 中的所有值相加或转换为 ArrayList

    我试图将 ArrayList 中的所有值相加 但没有任何方法可以让我得到总和 我必须找到从文本文件中提取的数字的平均值 public static void main String args throws IOException File
  • 枚举内的枚举

    这不是我被卡住的问题 而是我正在寻找一种简洁的方式来编写我的代码 本质上 我正在编写一个事件驱动的应用程序 用户触发事件 事件被发送到适当的对象 然后对象处理事件 现在我正在编写偶数处理程序方法 我希望使用 switch 语句来确定如何处理
  • Logback 配置在单行上有异常吗?

    我的日志被提取 传输并合并到 elasticsearch 中 多行事件很难跟踪和诊断 有没有办法使用收集器和正则表达式将异常行分组到单个记录中登录配置 https logback qos ch manual layouts html xTh
  • 外部化 Spring Security 配置?

    我有一个 Web 应用程序 可以使用 Spring Security 的几种不同配置 但是 这些差异配置都是在我的 applicationContext 配置文件中设置的 因此 为了在客户站点调整这些内容 必须在 WAR 文件内修改这些内容
  • 在Java中读取制表符分隔的文件

    我有以下代码来读取 Java 中的制表符分隔文件 while str in readLine null if str trim length 0 continue String values str split t System out p
  • SQLiteAssetHelper 甚至在从资产文件夹复制数据库之前就导致立即崩溃

    https github com jgilfelt android sqlite asset helper https github com jgilfelt android sqlite asset helper 我要从SQLiteOpe
  • 如何在 Java 中读取/转换 InputStream 为字符串?

    如果你有一个java io InputStream对象 您应该如何处理该对象并生成一个String 假设我有一个InputStream包含文本数据 我想将其转换为String 例如我可以将其写入日志文件 最简单的方法是什么InputStre
  • 使用 JavaFX 将可执行 Jar 限制为一个窗口

    我正在通过构建 JavaFX 应用程序E fx 剪辑 and Java场景生成器 基本功能是登录窗口 登录后 将打开新窗口 然后登录窗口消失 目前还处于原型阶段 用完eclipse后 我想要的功能都有了 启动时显示登录窗口 代码如下 Ove
  • 检查对象是否为空

    我有一个链表 其中第一个节点包含空对象 表示firstNode data等于null firstNode nextPointer null firstNode previousPointer null 我想检查firstNode 是否为空
  • Spring Boot - 如何在开发过程中禁用@Cacheable?

    我正在寻找两件事 如何在开发过程中使用 Spring boot dev 配置文件禁用所有缓存 application properties 中似乎没有通用设置可以将其全部关闭 最简单的方法是什么 如何禁用特定方法的缓存 我尝试像这样使用 S
  • oracle.jdbc.driver.OracleDriver ClassNotFoundException

    这是我收到错误的代码 我的classes12 jar已作为外部 jar 导入 import java io IOException import java io PrintWriter import java sql Connection
  • 如何解决声纳中的 dodgy:unchecked/unconfirmedcast 问题?

    我在下面的代码中通过声纳获得异常 我该如何解决这个问题 建议我 Override public boolean validate BaseInfo infoObject boolean isValid true AckTransferPay
  • jsch - 发送特殊键(CTRL-C、CTRL-D 等)

    我需要向远程终端发送特殊密钥 如何使用 JSCH 做到这一点 Thanks Walter 尝试发送两个字节 0x03 0x04 Check ASCII 表 http www bbdsoft com ascii html了解更多
  • java中从视频中提取图像

    我想知道如何使用 JMF 从视频中提取图像 Player player Manager createRealizedPlayer cdi getLocator player start FrameGrabbingControl frameG
  • 如何在 VSCode 中热重载 Tomcat 服务器

    我正在从 Eclipse IDE VSCode 分别用于编码 Java servlet 和 HTML CSS JS 网页 迁移到仅使用 Visual Studio Code 因为它的轻量级 我为 VSCode 安装了几个 Java 扩展 R
  • 如何在java中进行多处理,以及预期的速度提升是多少?

    我是一个新手 使用 Java 对 csv 文件进行一些数据处理 为此 我使用 Java 的多线程功能 线程池 将 csv 文件批量导入到 Java 中 并对每一行执行一些操作 在我的四核处理器上 多线程大大加快了处理速度 我很想知道多处理如
  • eclipse.ui.menus 的名称过滤器

    我有一个菜单贡献 通过实现org eclipse ui menus扩展点 我想仅为特定文件扩展名 例如 pld 提供此菜单贡献 但我不知道如何使用 visibleWhen 来做到这一点 有任何想法吗 更新 到目前为止我的扩展点

随机推荐

  • WPS全新品牌升级

    2022年1月7日 WPS正式官宣品牌升级 作为一款民族办公软件 WPS已经在办公领域默默深耕了34年 此次全新品牌升级后 WPS将正式启用全新的品牌标语 新建无限可能 并将品牌定位升级为 专注创新的国民办公软件 未来 WPS将秉持让每一个
  • c++成员初值列/成员初始化列表

    1 应用背景 如果我们只是简单的int x 去定义一个x变量 此时的x未被初始化 那么当我们读取这个未初始化的值时会导致不明确的行为发生 因此最佳的处理办法就是 永远在使用对象之前先将它初始化 对于无任何成员的内置类型 我们通常必须手工完成
  • 【单片机】单片机的核心思想

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 单片机的核心思想
  • Anaconda安装Python之【Conda基本操作】

    1 Conda安装 Anaconda是开源的Python包管理器 包含了python学习的全部包 安装后包含conda 一个用于管理python环境的工具 1 1 Conda安装 Conda installation For Linux c
  • Aurigma Image Uploader的ActiveX / JAVA图像文件上传控件概述

    Aurigma Image Uploader是一个功能强大的图像文件上传控件 该控件可以在客户端执行基本的图像处理 调整大小和旋转90度 缩略图可以使没有经过培训的用户也能方便的上载图像 产品特征 Image Uploader是一个客户端的
  • Myeclipse启动不了的解决方法

    Myeclipse启动不了的解决方法 我们在开发过程中经常在加载大工程时由于项目很大 导致编译时间很长 或是其他原因导致进度条有时候一直在不停地跑 占用了大量内存 在无奈之下直接将进程kill掉 当再次打开 这时候悲剧的事情发生了 发现My
  • 更改终端默认的python 解释器

    1 终端打开 bash profile文件 open bash profile 2 修改 bash profile文件内容 默认应该会有 如果没有PATH路径需要找到本机的路径设置 Setting PATH for Python 3 5 T
  • QT笔记——生成dump文件

    我们经常会遇到崩溃 此时我们需要定位问题再什么地方 这时候我们就会需要用到dump文件 方式一 include Windows h include DbgHelp h pragma comment lib dbghelp lib int G
  • 22 Python基础之流程控制之for循环

    流程控制之for循环 一 语法 二 for break 三 for continue 四 for循环嵌套 五 for else 六 for循环实现loading 一 语法 为什么有了while循环 还需要有for循环呢 不都是循环吗 我给大
  • fastjson反序列化漏洞(CVE-2017-18349)

    文章目录 fastjson 序列化 FastJson 序列化操作 反序列化 漏洞原理 漏洞复现 CVE 2017 18349 fastjson fastjson 是阿里巴巴开发的 java语言编写的高性能 JSON 库 用于将数据在 Jso
  • postgresql jdbc连接参数

    jdbc postgresql 192 168 1 23 12308 test useUnicode true amp characterEncoding gbk amp allowEncodingChanges true 见官网 http
  • 2023-2030老龄化(>=65)比率预测模型

    目录 前言 一 数据来源和处理 二 相关性检验 图形说明 相关矩阵 三 LSTM算法预测 四 BP神经网络预测 前言 如何预测未来八年老龄化比率 作者从以下四个角度出发 GDP 医院数 医院包括综合医院 中医医院 中西医结合医院 民族医院
  • 1_有关 01背包问题 和 完全背包问题 的详解

    目录 一 01背包问题 物品仅可选一次 1 题目 2 版本1 题解代码 代码 详解 3 版本2 题解代码 优化为一维 代码 详细 4 版本3 题解代码 优化输入 优选 代码 详解 二 完全背包问题 物品可选无限次 1 题目 2 基础版本1
  • OpenCV——中值滤波

    目录 一 原理概述 二 C 代码 三 结果展示 1 原图 2 3x3滤波 3 9x9滤波 四 python代码 一 原理概述 中值滤波 Median Filter 是一种非线性滤波技术 其基本思想是在单通道中将像素点邻域的灰度值进行排序 取
  • 启明云端分享

    1 Sstar System Tool说明 软件开发人员访问SigmaStar芯片寄存器 必须使用Debug Tool硬件工具和Sstar System Tool软件工具 Debug Tool硬件工具 如图所示 使用USB延长线连接PC机
  • 设计模式-策略模式

    策略模式是一种行为型设计模式 其主要目的是允许在运行时选择算法的行为 在Java中 我们可以使用策略模式来根据不同的条件动态地选择不同的算法 下面是一个示例代码 展示了如何在Controller中确定是什么策略 以及如何调用相应的Servi
  • php函数漏洞

    1 intval intval 获取变量的整数值 说明 int intval mixed var int base 10 通过使用指定的进制 base 转换 默认是十进制 返回变量 var 的 integer 数值 intval 不能用于
  • 区块链面临的挑战(一)

    id BSN 2021 公众号 BSN研习社 分布式存储 加密算法 共识机制 具有这些典型技术特征的区块链技术自一诞生 就被诸多行业看好 蕴含巨大的潜力 从实践进展来看 区块链技术在商业银行的应用大部分仍在构想和测试之中 距离在生活 生产中
  • 来自美团资深技术专家亲笔的400页的高并发系统设计,近50个核心难点,让你面试直接起飞!

    前言 在现今IT界特别是程序员 如果你对于高并发都没有接触和了解过未免也有些太孤陋寡闻 而作为一个优秀的程序员 高并发系统架构设计师必须要掌握的 很简单 现在大多数互联网公司都会用到高并发系统架构设计 像常见的 秒杀活动 抢红包 微博热搜
  • 【JAVAWEB开发】基于Java+Servlet+Ajax+jsp网上购物系统设计实现

    哈喽 大家好呀 这篇给的大家带来的是网上购物系统设计 在传统电商时代 用户是先有需求再购买 用户对平台较为依赖 商家对消费者很难有直接的影响力 而如今社交 电商解决了产品质量的信息不对称问题 电商已经成为当今经济发展的一个重要领域 而网上购