基于Java(JSP)+MySQL设计与实现的 MVC 鲜花订购系统

news2025/2/22 12:41:24

基于MVC的鲜花订购系统的设计与实现

摘 要

摘 要:鲜花订购系统与网络相结合,给用户提供更加周到和人性化的服务。网站模式为MVC模式,基于MySql数据库,采用Jsp,Session绘画跟踪、JavaScript等技术,实现了普通用户可以浏览、查看鲜花信息,可以注册成为网站用户、多种方式进行登录,然后查看或修改个人信息,还可以查看个人的订单情况等,管理员可以对普通用户、鲜花信息进行管理等功能。

1.目的与意义

随着计算机科学的发展,数据库技术在 Internet中的应用越来越广泛为广大网络用户提供了更加周到和人性化的服务。个性化已逐渐成为当今Web应用的朝流。简单的到店购买鲜花服务已经不能满足人们的需求,利用先进的管理手段,丰富鲜花订购的方式,提高服务效率,是当今社会所面临的一个重要课题,为此我们设计一个鲜花订购系统实现用户和鲜花的增删查改,使得鲜花订购更加便利,也使服务更加有效率。

2.理论基础及技术路线

2.1MVC

MVC是Model-View-Controller的缩写,它能很好地使数据层与表示层进行分离,应用程序的输入、输出和处理流程。其模式分为三部分,Model(模型)是用于处理应用程序数据逻辑的部分,负责在数据库中存取数据;View(视图)是处理数据显示部分,依据模型数据而创建;Controller(控制器)是处理用户交互的部分,负责从视图读取数据,控制用户输入并发送数据。

以用户注册为例:

2.2JSP

JSP是基于Java Servlet以及整个Java体系的Web开发技术,具有动态页面与静态页面分离,能够脱离硬件平台的束搏,以及编译后运行的优点,可以建立安全、跨平台的先进动态网站。

2.3Spring

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。

  • 目的:解决企业应用开发的复杂性
  • 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
  • 范围:任何Java应用
  • Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。

2.4Mybatis

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

2.5其他技术

运用Session会话跟踪技术,通过在服务器端记录信息确定用户的身份,用来记录以及跟踪用户在登录网页后的整个会话。同时通过配置文件,利用Servlet过滤器,使用他们来它们拦截请求和响应,比如利用过滤器判断用户是否为管理员才决定他们能否进入后台管理界面。例如网页用“欢迎来到管理员页面”用到的标签语句,也可以采用自定义标签技术。

3.模块总体设计

3.1系统主体模块

“鲜花订购系统”的主要功能模块分别前端与后台,前端有:首页、注册注销、鲜花品种与样式展示、子页面(普通用户、管理员);后台有:用户管理、鲜花管理等功能。系统功能如图所示:

功能介绍

  • 首页:显示网站栏目与网站介绍,并根据当前用户权限对其提供子页面的链接,进入个人主页面或多个子页面,同时提供注销功能。
  • 商品浏览:根据不同季节与特殊节日的需求,提供不同的商品,一来吸引眼球,再者可以帮助用户更快地选择心意的鲜花。
  • 普通用户:前端为用户提供登录注册,商品浏览页、详细页,个人收藏页、加入购物车,查看个人订单等一系列功能,还可查看用户详细信息并进行修改等操作。
  • 管理员:对商品(鲜花)进行增删查改,通过后台管理订单信息,对订单状态,收货地址进行修改等操作,还可管理普通用户信息。
  • 数据库表定义

用户表

名称

类型

主键

是否为外键

id

int

account

varchar(20)

password

varchar(20)

name

varchar(20)

age

int

sex

varchar(10)

phone

varchar(11)

email

char(40)

address

varchar(50)

count

int

reg_date

datetime

last_login——date

datetime

管理员信息表

名称

类型

主键

是否为外键

id

int

password

varchar(20)

name

varchar(20)

鲜花信息表

名称

类型

主键

是否为外键

id

int

type

varchar(20)

name

varchar(20)

stock

int

price

decimal(9.2)

flo_mean

varchar(100)

photo

varchar(200)

购物车信息表

名称

类型

主键

是否为外键

id

int

user_id

int

flower_id

int

shoppingnum

int

Focus信息表

名称

类型

主键

是否为外键

id

int

user_id

int

flower_id

int

focustime

datetime

订单信息表

名称

类型

主键

是否为外键

id

int

name

varchar(20)

photo

varchar(200)

num

varchar(20)

user_id

int

con_name

varchar(20)

con_sex

varchar(10)

con_phone

varchar(20)

address

varchar(100)

total_amount

decimal(9,2)

ord_date

datetime

status

varchar(20)

remark

varchar(100)

记录表

名称

类型

主键

是否为外键

id

int

user_id

int

date

datetime

ip

varchar(20)

商品评价表

名称

类型

主键

是否为外键

id

int

user_id

int

login_name

varchar(20)

order_id

int

date

datetime

comment

varchar(500)

3.2系统E-R图

  • 主题:鲜花订购系统
  • 用况:普通用户注册、登录,浏览鲜花,修改个人信息、查看个人收藏、订单等功能;管理员对普通用户、鲜花、以及订单进行增删查改操作。

3.3系统实现

3.3.1开发环境工程目录截图

  • 开发工具:Eclipse
  • 数据库:MYSQL
  • 调式环境:火狐浏览器、IE浏览器、GoogleChrome等
  • 适用环境:支持任何浏览器。
  • 说明:Mapper类:逻辑层,实现对数据库进行持久化操作;pojo类:包含有getter和setter方法,支持业务逻辑的协助类。方便程序员使用数据库中的数据表,对数据库进行操作;Service类:业务层,封装通用的业务逻辑和操作,与数据层交互。Impl是把mapper和service进行整合的文件;Controller类:控制器,通过接受前端请求经过业务处理层处理之后封装成model,再将model返回给对应的view显示;Interceptor类:拦截器,属于面向切面编程,拦截service并做出操作;resources资源包,存放配置文件,用于指导Spring工厂进行bean生产,依赖关系注入及bean实例分发,
  • 开发文件夹截图:
  • controller+interceptor+mapper

  • pojo+service

  • util+resources

  • webapp

3.4主要界面介绍

3.4.1前端主要页面

登录:可根据用户名、电话、邮箱等多种方式进行登录,并输入正确的验证码,完成登录,LoginServlet会将用户登录信息进行验证,如果返回为0则跳转到error.html并提示用户登录失败,否则将用户的权限存入session中,然后跳转到首页,如果用户直接点击管理员页面,则提示你的权限不够,请用管理员账号登陆访问页面!

核心代码(登录功能:login.jsp)

<script type="text/javascript" language="javascript">
    function checkForm(){
        var account = checkUserMess();
        return account ;
    }

    function checkUserMess(){
        var phone=/^1[34578]\d{9}$/;/* 手机号验证,11位手机号 */
        var account=/^\w{3,}$/;/*用户名验证,至少三位 */
        var email=/^\w+@\w+\.[A-Za-z]{2,3}(\.[A-Za-z]{2,3})?$/;

        /* 获取用户登陆信息 */
        var account = $("#signin-mess").val();

        /* 判断用户输入是否为邮箱,是则将name属性值改为邮箱 */
        if(email.test(account)){
            $("#signin-mess").attr("name","email");
        }

        /* 判断用户输入是否为邮箱,是则将name属性值改为邮箱 */
        if(phone.test(account)){
            $("#signin-mess").attr("name","phone");
        }
    }
</script>
注册页面

首页

登录成功后进入系统首页,可预览当前鲜花品种及其样式,根据不同需求进入不同浏览子页面(商品详细页、个人订单页等)。

商品详细页(子页面)

个人收藏页(子页面)

加入购物车(子页面)
  • 其核心代码
  • 放获取商品信息添加到购物车那部分

个人订单页(子页面)

商品评价:收到商品后对本商品进行评价

用户信息页(查看或修改个人信息)

登录拦截:在进行收藏商品或下单等功能,需要登录才能执行,系统自动跳转登录页面并提示用户进行登录操作。

3.4.2后台主要页面
鲜花信息页:对商品进行增删查改
  • 其一添加商品上传图片文件的核心代码(flower-add.jsp)
<div class="layui-form-item" style="margin-bottom: 10px">
                        <div class="layui-input-block">
                            <!-- 用一个div来当作美化的上传按钮,file按钮被透明化 -->
                            <div id="btn" style="width: 100px;margin-left: 90px;margin-bottom: 10px">
                                文件上传
                                <input type="file" name="pictureFile" class="file" onclick="daojishi()"> <%--onclick="daojishi()"--%>
                            </div>
                            <!--图片回显-->
<%--                            <c:if test="${sessionScope.flower.photo!=null}">
                                <img src="${ctx}/${sessionScope.flower.photo}" width="50" height="50">
                            </c:if>--%>
                            <!-- 文件名显示区域 -->
                            <div id="filename"></div>
                        </div>
                        ${requestScope.msg}

订单表管理:对订单状态,收货地址等进行查询、修改或删除此订单

其一的核心代码(orderform-update.jsp)

<div style="padding: 15px;">
            <h1 style="text-align: center;margin-bottom: 25px;margin-top: 20px">修改订单</h1>
            <div style="width: 500px;margin: 0px auto">

                <form class="layui-form layui-form-pane" action="${ctx}/orderform/${sessionScope.orderform.id}/update">
                    <div class="layui-form-item" style="margin-bottom: 30px">
                        <label class="layui-form-label">收件人姓名</label>
                        <div class="layui-input-block">
                            <input type="text" name="conName"  value="${sessionScope.orderform.conName}" autocomplete="off" class="layui-input" style="width: 400px">
                        </div>
                    </div>
                    <div class="layui-form-item" style="margin-bottom: 30px">
                        <label class="layui-form-label">收件人性别</label>
                        <div class="layui-input-block">
                            <input type="text" name="conSex" required lay-verify="required" value="${sessionScope.orderform.conSex}" autocomplete="off" class="layui-input" style="width: 400px">
                        </div>
                    </div>
                    <div class="layui-form-item" style="margin-bottom: 30px">
                        <label class="layui-form-label">收件人电话</label>
                        <div class="layui-input-block">
                            <input type="text" name="conPhone" required lay-verify="required" value="${sessionScope.orderform.conPhone}" autocomplete="off" class="layui-input" style="width: 400px">
                        </div>
                    </div>
                    <div class="layui-form-item" style="margin-bottom: 30px">
                        <label class="layui-form-label">地址</label>
                        <div class="layui-input-block">
                            <input type="text" name="address" required lay-verify="required" value="${sessionScope.orderform.address}" autocomplete="off" class="layui-input" style="width: 400px">
                        </div>
                    </div>
                    <div class="layui-form-item" style="margin-bottom: 20px">
                        <label class="layui-form-label">备注</label>
                        <div class="layui-input-block">
                            <input type="text" name="remark"  value="${sessionScope.orderform.remark}" autocomplete="off" class="layui-input" style="width: 400px">
                        </div>
                    </div>

                        <button type="submit" class="layui-btn" id="test1" style="margin-top: 10px">
                            <i class="layui-icon">&#xe67c;</i>提交
                        </button>
                </form>
            </div>
        </div>

    </div>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2301195.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络原理-

文章目录 协议应用层传输层网络层 数据链路层 协议 在网络通信中,协议是非常重要的概念.协议就是一种约定. 在网络通信过程中,对协议进行了分层 接下来就按照顺序向大家介绍每一种核心的协议. 应用层 应用层是咱们程序员打交道最多的一层协议.应用层里有很多现成的协议,但…

解码 NLP:从萌芽到蓬勃的技术蜕变之旅

内容概况&#xff1a; 主要讲述NLP专栏的内容和NLP的发展及其在现代生活中的广泛应用。课程强调实践为主、理论为辅的学习方法&#xff0c;并通过多个生活场景展示了NLP技术的实际应用&#xff0c;如对话机器人、搜索引擎、翻译软件、电商推荐和智能客服等。 这边我就不多做自我…

Word中的文档信息域

Word中的文档信息域 DocProperty包含文档信息的多个属性, 也可以自定义属性. 查看文档预定义的自定义属性 【文件】→【信息】→【属性】→【高级属性】 参考链接 WORD中文档属性域DocProperty的应用-CSDN博客 第06套 Word_哔哩哔哩_bilibili

java机器学习计算指标动态阈值

java机器学习计算指标动态阈值 最近听到有的人说要做机器学习就一定要学Python&#xff0c;我想他们掌握的知道还不够系统全面。本文作者以动态阈值需求场景给大家介绍几种常用Java实现的机器学习库&#xff0c;包括使用开源库如Weka或Deeplearning4j&#xff08;DL4J&#xf…

Note25021902_TIA Portal V18 WinCC BCA Ed 需要.NET 3.5 SP1

TIA Portal V18 WinCC BCA Ed 需要.NET 3.5 SP1 在安装TIA Portal V18时&#xff0c;遇到TIA Portal V18 WinCC BCA Ed 需要.NET 3.5 SP1. 请在此PC上中启用.NET 3.5 SP1&#xff1b; 检索&#xff1a; 电脑上如何启用 .NET 3.5 SP1 参考资料1&#xff1a; https://baijiahao.…

CHARMM-GUI EnzyDocker: 一个基于网络的用于酶中多个反应状态的蛋白质 - 配体对接的计算平台

❝ "CHARMM-GUI EnzyDocker for Protein−Ligand Docking of Multiple Reactive States along a Reaction Coordinate in Enzymes"介绍了 CHARMM-GUI EnzyDocker&#xff0c;这是一个基于网络的计算平台&#xff0c;旨在简化和加速 EnzyDock 对接模拟的设置过程&…

阅读论文笔记《Translating Embeddings for Modeling Multi-relational Data》

目录 一、模型核心原理剖析二、实验设计与数据集选择三、实验结果深度解读&#xff08;一&#xff09;链接预测实验&#xff08;二&#xff09;关系分类实验&#xff08;三&#xff09;链接预测示例&#xff08;四&#xff09;泛化实验 四、模型优缺点总结&#xff08;一&#…

​实在智能与宇树科技、云深科技一同获评浙江省“人工智能服务商”、 “数智优品”​等荣誉

近日&#xff0c;浙江省经信厅正式公布《2024 年浙江省人工智能应用场景、应用标杆企业、人工智能服务商及 “数智优品” 名单》。 实在智能获评浙江省“人工智能服务商”&#xff0c;核心产品 “实在 Agent 智能体” 入选 “数智优品”。一同获此殊荣的还有宇树科技、云深处科…

跳表(Skip List)详解

一、什么是跳表&#xff1f; 跳表是一种基于有序链表的高效数据结构&#xff0c;通过建立多级索引实现快速查询。它在平均情况下支持O(log n)时间复杂度的搜索、插入和删除操作&#xff0c;性能接近平衡树&#xff0c;但实现更为简单。 二、核心原理 1. 层级结构 底层为完整…

轻松搭建本地大语言模型(一)Ollama安装与使用

Ollama 是一款开源的本地大语言模型运行框架&#xff0c;支持在 Windows、macOS 和 Linux 系统上运行&#xff0c;能够帮助用户轻松下载和使用各种大语言模型&#xff08;例如deepseek、llama、qwen&#xff09;。本文将详细介绍 Ollama 的安装步骤&#xff0c;帮助你快速搭建本…

kafka消费能力压测:使用官方工具

背景 在之前的业务场景中&#xff0c;我们发现Kafka的实际消费能力远低于预期。尽管我们使用了kafka-go组件并进行了相关测试&#xff0c;测试情况见《kafka-go:性能测试》这篇文章。但并未能准确找出消费能力低下的原因。 我们曾怀疑这可能是由我的电脑网络带宽问题或Kafka部…

[STM32 - 野火] - - - 固件库学习笔记 - - - 十六.在SRAM中调试代码

一、简介 在RAM中调试代码是一种常见的嵌入式开发技术&#xff0c;尤其适用于STM32等微控制器。它的核心思想是将程序代码和数据加载到微控制器的内部RAM&#xff08;SRAM&#xff09;中运行&#xff0c;而不是运行在Flash存储器中。这种方法在开发过程中具有显著的优势&#…

雷军推荐:WPS 与 Pastemate 联用,效率飞升新高度

在当今快节奏的工作与学习环境中&#xff0c;效率提升成为了每个人都在追求的目标。而雷军&#xff0c;这位科技界的领军人物&#xff0c;凭借其敏锐的洞察力&#xff0c;为我们推荐了一组强大的工具组合 ——WPS 与 Pastemate&#xff0c;它们携手合作&#xff0c;能够为我们的…

轴承故障特征—SHAP 模型 3D 可视化

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 基于FFT CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客 基于FFT CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客 P…

斐波那契数列模型:在动态规划的丝绸之路上追寻斐波那契的足迹(上)

文章目录 引言递归与动态规划的对比递归解法的初探动态规划的优雅与高效自顶向下的记忆化搜索自底向上的迭代法 性能分析与比较小结 引言 斐波那契数列&#xff0c;这一数列如同一条无形的丝线&#xff0c;穿越千年时光&#xff0c;悄然延续其魅力。其定义简单而优美&#xff…

智能选路+NAT实验

1.实验拓扑&#xff1a; 二.实验配置 1、防火墙ip配置和信任区域配置&#xff1a; 2.导入地址库&#xff1a;先下载模板--->进入模板修改地址信息--->导入地址&#xff1a; 3配置链路接口&#xff1a; 4.配置真实DNS服务器信息 5.创建虚拟服务&#xff0c;虚拟DNS服务…

电商API接口数据与市场趋势分析的深度融合

一、电商API接口数据的价值 电商API接口是连接电商平台与外部系统&#xff08;如数据分析工具、ERP系统等&#xff09;的桥梁。通过API接口&#xff0c;企业可以获取海量的交易数据、用户行为数据、商品信息等。这些数据具有以下价值&#xff1a; 数据实时性&#xff1a;API接…

SMOJ 种植玉米/铺地砖 题解

最近练了轮廓线dp的题目 1.种植玉米 题意 农夫有一个被划分成 m m m行 n n n列的农田。 每个格子的数字如果是 1 1 1则表示该格子的土地是肥沃的&#xff0c;可以种植玉米&#xff1b;如果该格子的数字是 0 0 0则表示该格子不能种植玉米。 但是还有一个条件&#xff1a;不…

沃丰科技大模型标杆案例 | 索尼大模型智能营销机器人建设实践

AI大模型发展日新月异&#xff0c;国内外主流大模型每月必会升级。海外AI大模型市场由美国主导&#xff0c; 各模型已形成“多强竞合”的局面。中国积极响应全球大模型技术的发展趋势&#xff0c;高校、研究院所等科研机构、互联网企业&#xff0c;人工智能企业均不同程度地投入…

【Java项目】基于SpringBoot的【休闲娱乐代理售票系统】

【Java项目】基于SpringBoot的【休闲娱乐代理售票系统】 技术简介&#xff1a;系统软件架构选择B/S模式、SpringBoot框架、java技术和MySQL数据库等&#xff0c;总体功能模块运用自顶向下的分层思想。 系统简介&#xff1a;休闲娱乐代理售票系统&#xff0c;在系统首页可以查看…