订单系统的代码实现

article/2025/7/13 23:23:02

面向接口的编程:

面向接口编程(Interface Oriented Programming:OIP)是一种编程思想,接口作为实体抽象出来的一种表现形式,用于抽离内部实现进行外部沟通,最终实现内部变动而不影响外部与其他实现交互,可以理解成按照这种思想来设计编程的方式就可以称为面向接口编程。 它并不是比面向对象编程更先进的一种独立的编程思想,可以说属于面向对象思想体系的一部分或者说它是面向对象编程体系中的思想精髓之一

用我的话说就是:用接口来解耦

Entity:

@Data注解来自lombok 此处帮助简化了set(), get(),toString()等方法

@Data
public class Client {private int clientId ;private String clientName;private String sex;private int age;public Client(int id, String clientName, String sex, int age) {this.clientId = id;this.clientName = clientName;this.sex = sex;this.age = age;}public Client(){}public Client(int clientId){this.clientId = clientId;}
}

Utils:

JdbcUtil.class:主要用于jdb的频繁连接和释放操作
JDBC工具类

DAO:

方法的命名:通常是和SQL语句有关 selectById updateById …

dao.ClientDao.java接口

/*** function annotation:通过id查询指定Client* TODO* @param id* @return Client*/Client selectById(Integer id) throws SQLException, ClassNotFoundException;

dao.impl.ClientDaoImpl.java 实现类

@Overridepublic Client selectById(Integer id) throws SQLException, ClassNotFoundException {String sql = "select * from client_TB where clientId = ?";//连接数据库Connection connection = JdbcUtils.getConnection();PreparedStatement ps = connection.prepareStatement(sql);ps.setInt(1, id);ResultSet resultSet = ps.executeQuery();Client client = new Client();while (resultSet.next()) {client.setClientId(resultSet.getInt(1));client.setClientName(resultSet.getString(2));//数据转化 birthday 转化成ageDate date = resultSet.getDate(3);int age = DateCompareUtils.compareYear(date.toString());client.setAge(age);client.setSex(resultSet.getString(4));}//释放资源JdbcUtils.release(resultSet,connection,ps);return client;}

Service:

本项目就是简单的增删查看,所以直接return clientdao.selectById();

//创建dao层对象
private ClientDao clientDao = new ClientDaoImpl();@Overridepublic Client getById(Integer id) throws SQLException, ClassNotFoundException {return clientDao.selectById(id);}

Controller:

public class FindClientServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req,resp);}@SneakyThrows@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1 获取表单数据//客户IDString clientId = req.getParameter("clientId");int id = Integer.parseInt(clientId);//2 创建 ClientService对象ClientService clientService = new ClientServiceImpl();//3 调用 clientService getById方法Client cl = clientService.getById(id);List<Client> list = new ArrayList<>();list.add(cl);//4 将结果放到request域当中req.setAttribute("clients",list);// 请求转发req.getRequestDispatcher("/clientList.jsp").forward(req,resp);}
}

在web.xml上设置servlet路径映射

 <servlet><servlet-name>ListClientServlet</servlet-name><servlet-class>cn.edu.bnuz.order_system.controller.clientServlet.ListClientServlet</servlet-class></servlet><servlet-mapping><servlet-name>ListClientServlet</servlet-name><url-pattern>/listClient</url-pattern></servlet-mapping>

View:

在编写JSP代码时候一定要弄清楚逻辑顺序:Servlet→JSP 还是 JSP→Servlet 等等

这个时候在一开始项目设计时候用到的逻辑顺序图可以帮助我理解这样复杂的逻辑关系,能够快速定位

例如所有的VIEW层的JSP页面转发一定是要在一张JSP主页面里显示的,首先在启动Tomcat服务器时候就需要使用web.xml下设置默认开启的主页面

<welcome-file-list><welcome-file>main.jsp</welcome-file>
</welcome-file-list>

此处使用main.jsp页面作为启动项目的默认页面,<welcome-file-list>标签从字面意思就很清楚了解

main.jsp

<table width="100%" height="700"  cellpadding="0" cellspacing="0" border="1"><tr><td width="15%" height="100%" valign="top" ><a href="${pageContext.request.contextPath}/listClient" target="mainFrame" style="padding-left: 90px">查询客户</a><br><a href="${pageContext.request.contextPath}/listProduct" target="mainFrame"style="padding-left: 90px">查询产品</a><br><a href="${pageContext.request.contextPath}/listOrder" target="mainFrame"style="padding-left: 90px">查询订单</a><br></td><td width="60%" height="100%" valign="top" ><iframe name="mainFrame" width="1100" height="2000" scrolling="no" frameborder="0" align="center"></iframe></td></tr></table>

<iframe>标签用于显示内嵌的jsp页面

例如:

通过逻辑顺讯图可知ListClient功能的逻辑顺序: main.jsp→ListClientServlet.class→view.jsp→clientList.jsp

主页main.jsp选择ListClient功能→ListClientServlet数据请求,数据装载到clientList.jsp→view.jsp更新为clientList.jsp

EL表达式能帮助简化代码

TIPS:用到了EL表达式,而JSP文件默认不使用的,需要引用

<%--el表达式的开启--%>
<%@ page isELIgnored="false"%>

client.jsp页面

<table border="1" align="center"><tr bgcolor="#949494"><th>客户ID</th><th>客户名</th><th>性别</th><th>年龄</th></tr><%--使用JSTL标签库的 <c:froEach>标签--%><c:forEach items="${clients}" var="cl"><tr><td align="center">${cl.clientId}</td><td align="center">${cl.clientName}</td><td align="center">${cl.sex}</td><td align="center">${cl.age}</td></tr></c:forEach>
</table>

最后的效果:默认是没有显示右边的客户表是一个main.jsp

当点击左边箭头所指的超链接就会弹出:具体功能实现了CRUD功能

在这里插入图片描述
github源码
https://github.com/zslkdjaw/study_notes/tree/servlet-jsp-mysql-orderSystem

基于数据库的订单系统设计模式应用开发

代码实现

总结


http://chatgpt.dhexx.cn/article/02DO76BB.shtml

相关文章

【码学堂】教师如何在码学堂上组织教学活动?

码学堂简介 码学堂是由贵州师范学院数学与大数据学院研发的智慧教学平台&#xff0c;学生可以自主练习&#xff0c;教师可以组织练习、考试、竞赛、共享题库、共享教学资源&#xff0c;支持判断题、单项选择题、多项选择题、填空题、程序函数题、程序填空题、编程题、主观题8种…

如何在码学堂组织练习、考试、竞赛?

组织练习、考试、竞赛时就是将多个题目组成题目集&#xff0c;然后加入学生组完成。题目集是由多个题目构成的集合&#xff0c;可以理解为组卷、出卷&#xff0c;码学堂上“练习/作业”、“考试”或“竞赛”操作方式一致&#xff0c;故下面以考试为例来说明操作方法。 1 设置题…

如何开发出一款直播APP项目实践篇 -【原理篇】

【 主要模块】 主播端&#xff1a; 把主播实时录制的视频&#xff0c;经过&#xff08;采集、美颜处理、编码&#xff09;推送到服务器服务器&#xff1a; 处理&#xff08;转码、录制、截图、鉴黄&#xff09;后分发给用户播放端播放器&#xff1a; 获取服务器地址&#xff0…

短视频小视频直播app开发定制解决方案

一、直播APP的市场前景 随着智能移动手机端的普及,人们对于线上的娱乐的要求越发感兴趣,很多互联网电商平台也将直播APP作为销售的主战场之一。将线上与线下的方式相结合才能更好的促进企业的发展。当然对于直播APP的开发也是我们需要了解的。相关数据表明,目前直播APP对于…

直播APP开发过程

直播是2016年火爆的产业&#xff0c;看起来很炫&#xff0c;玩起来很方便、很贴近生活&#xff0c;开发一款直播App不仅耗时还非常昂贵&#xff0c;那么&#xff0c;开发一款直播App到底分几步走&#xff1f; 第一步&#xff1a;分解直播App的功能&#xff0c;我们以X客为例 1…

直播app开发必备五步流程

直播app开发搭建是最近几年比较火的技术&#xff0c;本文从技术角度分析一套直播app开发必备的几个流程。 从主播录制视频开始到最后直播间播放&#xff0c;涉及到的流程包括&#xff1a; 音视频采集—>编码和封装—>推流到流媒体服务器—>流媒体服务器播流分发—&g…

金融直播APP方案开发

分享一下英唐众创开发的金融直播APP解决方案。随着视频直播风靡全球&#xff0c;视频直播已成为众多传统行业和互联网行业争夺的“香饽饽”。金融行业当然也不例外&#xff0c;在当今“互联网”的大时代下&#xff0c;金融行业作为走在前沿的产业&#xff0c;不但开辟出互联网金…

如何开发出一款仿映客直播APP项目实践篇 -【原理篇】

前言&#xff1a;每个成功者多是站在巨人的肩膀上&#xff01;在做直播开发时 碰到了很多问题&#xff0c;在收集了许多人博客的基础上做出来了成功的直播项目并做了整理&#xff0c;并在最后奉上我的全部代码。 其中采用博客的博主开篇在此感谢&#xff0c;本着开源分享的精神…

cmd的炫酷玩法教程

在我们看电影的时候&#xff0c;经常看到黑客在电脑是一顿猛如虎的操作。然后电脑上就出现一系列花里胡哨的画面&#xff0c;其实那种画面我们用cmd的一行代码就能搞定。 第一步 按WinR&#xff0c;输入cmd&#xff0c;打开小黑框。 第二部 如果什么属性都不设置&#xff…

一行代码让你伪装成黑客惊艳世人

今天给大家带来一行代码让你伪装成黑客惊艳世人&#xff0c;保证让你成为学校机房最亮的崽 新建一个文本文档&#xff0c;输入tree c: CtrlS保存 重命名修改后缀名为.bat 这就OK了&#xff0c;不知道这个代码你有没有学废了&#xff01;

小bat大装逼(▼へ▼メ)

直接上代码 echo off cls color echo come!!! color 1a color 2b color 3c color 4d color 5e color 6f color 70 tree d: dir /s %0把代码粘贴到一个【文件名.bat】文件中&#xff0c;例如 复制粘贴完成&#xff0c;别忘记【Ctrls】进行保存操作啊。 然后打开就行了。很疯狂…

使用cmd命令行装逼,让命令行滚动起来

使用cmd命令行装逼&#xff0c;让命令行滚动起来 一、滚动cmd二、清理垃圾总结 一、滚动cmd color a扫描当前所有目录 dir /s二、清理垃圾 创建txt文件 echo offdel/f/s/q %systemdrive%\*.tmp del/f/s/q %systemdrive%\*._mp del/f/s/q %systemdrive%\*.logdel/f/s/q %sys…

(六)C语言入门,代码编程,三子棋游戏【300行】【原创】

文章目录 十二篇文章汇总&#xff0c;独家吐大血整理 编译环境 游戏界面 test6.c game.c game.h​​​​​​​ ​​​​​​​ 编译环境 VS2019 游戏界面 test6.c #include <stdio.h>//std standard input output #include <string.h> #include <game…

C语言编程流程

2.5 C语言编程流程 C语言的编程流程 a)解决什么问题 b)怎么解决 c)编写程序 d)分析结果 2. 解决什么问题 &#xff1f; 比如说&#xff1a;我们如何打开、关闭一个计算器呢&#xff1f; 3 那么我们怎么解决呢&#xff1f; 我们可以通过命令行的方式打开、关闭计算器 在DO…

c语言万年历查询程序代码,C语言实现万年历程序的代码分享

C语言实现万年历程序的代码分享 发布时间&#xff1a;2020-04-27 09:55:52 来源&#xff1a;亿速云 阅读&#xff1a;795 作者&#xff1a;小新 今天小编给大家分享的是C语言实现万年历程序的代码&#xff0c;相信很多人都不太了解&#xff0c;为了让大家更加了解C语言实现万年…

C语言基础部分代码

这是我大一的时候新入门C语言整个语法的时候&#xff0c;课堂中所练习的一些基础问题的源码&#xff0c;现分享给新入门C语言的小白&#xff0c;以便于学习了解C语言。 目录 1.将一个正整数分解质因数 2.判断一个数是否为水仙花数 3.找出1000以内的所有完数 4.求一个数是否为素…

圣诞树代码,c语言编程,基于graphics.h

头文件 icon.h&#xff1a; #pragma once #ifndef _ICON_H_ #define _ICON_H_#include<graphics.h> #include<string.h> #include<stdlib.h> #include<iostream> #include<string> #include<Windows.h> #include<Mmsystem.h> #prag…

c语言手机表白代码大全,C语言表白代码

在这个狂虐单身狗的节日&#xff0c;看见了别人写的告白的代码&#xff0c;分享给大家。愿天下有情人终成眷属&#xff0c;也愿爱而不得者早日释怀。 效果图&#xff1a; 代码分享&#xff1a; #include #include int main() { double y, x, z; printf("那一天\n"); …

C语言圣诞树代码

祝大家圣诞节快乐 C语言数组实现 圣诞树代码&#xff1a; #include<stdio.h> #include<stdlib.h> void hang (int *p,int n,int s){for(int i0;i<n;i){*(pi)s;} } int main(){system("color 0A");//控制台和字体颜色system("mode con cols102 l…

C语言程序设计部分基础代码(已用MD编辑器重写一篇博客)

原因&#xff1a;未用MarkDown编辑器编写&#xff0c;容易乱码。 前言 在vs2022的编译环境中不能调用scanf函数&#xff0c;只能调用scanf_s函数用于输入 For语句中的间隔用分号“&#xff1b;”例如for&#xff08;i1&#xff1b;i<n;i) scanf_s后边对应的数值应该取址…