当前位置: 首页 > news >正文

JavaEE作业-实验三

目录

1 实验内容

2 实验要求

3 思路

4 核心代码

5 实验结果


1 实验内容

简单的线上图书交易系统的web层

2 实验要求

①采用SpringMVC框架,采用REST风格

②要求具有如下功能:商品分类、订单、购物车、库存

③独立完成,编写实验报告

3 思路

①确保项目结构清晰,按照MVC的结构进行组织

②在pom.xml中添加SpringMVC相关依赖,以及其他可能需要的依赖,比如数据库连接池、模板引擎等:

③配置web.xml文件,配置DispatcherServlet和Spring监听器:

④在WEB-INF目录下创建相关文件,配置相关内容:

⑤在com.exp.controller包下创建控制器类,使用@RestController注解,以REST风格暴露接口

⑥创建JSP文件,用于显示前端页面。

4 核心代码

BookController类

@RestController
@RequestMapping("/books")
public class BookController {

    @Autowired
    private BookService bookService;

    @GetMapping
    public List<Book> getAllBooks() {
        return bookService.getAllBooks();
    }

    @GetMapping("/{id}")
    public Book getBookById(@PathVariable Long id) {
        return bookService.getBookById(id);
    }

    @PostMapping
    public void addBook(@RequestBody Book book) {
        bookService.addBook(book);
    }

    @PutMapping("/{id}")
    public void updateBook(@PathVariable Long id, @RequestBody Book book) {
        book.setId(id);
        bookService.updateBook(book);
    }

    @DeleteMapping("/{id}")
    public void deleteBook(@PathVariable Long id) {
        bookService.deleteBook(id);
    }
}

②OrderController

@RestController
@RequestMapping("/orders")
public class OrderController {

    @Autowired
    private OrderService orderService;

    @GetMapping
    public List<Order> getAllOrders() {
        return orderService.getAllOrders();
    }

    @GetMapping("/{id}")
    public Order getOrderById(@PathVariable Long id) {
        return orderService.getOrderById(id);
    }

    @PostMapping
    public void addOrder(@RequestBody Order order) {
        orderService.addOrder(order);
    }

    @PutMapping("/{id}")
    public void updateOrder(@PathVariable Long id, @RequestBody Order order) {
        order.setId(id);
        orderService.updateOrder(order);
    }

    @DeleteMapping("/{id}")
    public void deleteOrder(@PathVariable Long id) {
        orderService.deleteOrder(id);
    }
}

③CartController

@RestController
@RequestMapping("/cart")
public class CartController {

    @Autowired
    private CartService cartService;

    @GetMapping("/{userId}")
    public List<CartItem> getCartItemsByUserId(@PathVariable Long userId) {
        return cartService.getCartItemsByUserId(userId);
    }

    @PostMapping
    public void addCartItem(@RequestBody CartItem cartItem) {
        cartService.addCartItem(cartItem);
    }

    @PutMapping("/{id}")
    public void updateCartItem(@PathVariable Long id, @RequestBody CartItem cartItem) {
        cartItem.setId(id);
        cartService.updateCartItem(cartItem);
    }

    @DeleteMapping("/{id}")
    public void deleteCartItem(@PathVariable Long id) {
        cartService.deleteCartItem(id);
    }
}

④InventoryController

@RestController
@RequestMapping("/inventory")
public class InventoryController {

    @Autowired
    private InventoryService inventoryService;

    @GetMapping("/{bookId}")
    public Inventory getInventoryByBookId(@PathVariable Long bookId) {
        return inventoryService.getInventoryByBookId(bookId);
    }

    @PostMapping
    public void addInventory(@RequestBody Inventory inventory) {
        inventoryService.addInventory(inventory);
    }

    @PutMapping("/{id}")
    public void updateInventory(@PathVariable Long id, @RequestBody Inventory inventory) {
        inventory.setId(id);
        inventoryService.updateInventory(inventory);
    }

    @DeleteMapping("/{id}")
    public void deleteInventory(@PathVariable Long id) {
        inventoryService.deleteInventory(id);
    }
}

5 实验结果

①购物车界面

库存界面

订单界面

商品(书籍)界面

相关文章:

JavaEE作业-实验三

目录 1 实验内容 2 实验要求 3 思路 4 核心代码 5 实验结果 1 实验内容 简单的线上图书交易系统的web层 2 实验要求 ①采用SpringMVC框架&#xff0c;采用REST风格 ②要求具有如下功能&#xff1a;商品分类、订单、购物车、库存 ③独立完成&#xff0c;编写实验报告 …...

K8S容器挂了后重启状态正常,但应用无法访问排查处理

K8S容器挂了后重启状态正常&#xff0c;但应用无法访问排查处理 背景&#xff1a; 应用迁移K8S后因POD OOM挂了后重启&#xff0c;集群上POD状态正常&#xff0c;但应用无法访问。 排查&#xff1a; 查看应用日志&#xff0c;是启动时调用特权账号管理系统超时&#xff0c;…...

问题:老年人心理健康维护与促进的原则为________、________、发展原则。 #媒体#知识分享

问题&#xff1a;老年人心理健康维护与促进的原则为________、________、发展原则。 参考答案如图所示...

【超高效!保护隐私的新方法】针对图像到图像(l2l)生成模型遗忘学习:超高效且不需要重新训练就能从生成模型中移除特定数据

针对图像到图像生成模型遗忘学习&#xff1a;超高效且不需要重新训练就能从生成模型中移除特定数据 提出背景如何在不重训练模型的情况下从I2I生成模型中移除特定数据&#xff1f; 超高效的机器遗忘方法子问题1: 如何在图像到图像&#xff08;I2I&#xff09;生成模型中进行高效…...

Transformer的PyTorch实现之若干问题探讨(二)

在《Transformer的PyTorch实现之若干问题探讨&#xff08;一&#xff09;》中探讨了Transformer的训练整体流程&#xff0c;本文进一步探讨Transformer训练过程中teacher forcing的实现原理。 1.Transformer中decoder的流程 在论文《Attention is all you need》中&#xff0…...

解释Python中的GIL(全局解释器锁)及其影响。描述Python中的垃圾回收机制。Python中的类变量和实例变量有什么区别

解释Python中的GIL&#xff08;全局解释器锁&#xff09;及其影响 Python中的GIL&#xff08;全局解释器锁&#xff09;是CPython解释器中的一个机制&#xff0c;用于同步线程的执行。GIL确保任何时候只有一个线程在执行Python字节码。这意味着&#xff0c;即使在多核或多处理器…...

Appium使用初体验之参数配置,简单能够运行起来

一、服务器配置 Appium Server配置与Appium Server GUI&#xff08;可视化客户端&#xff09;中的配置对应&#xff0c;尤其是二者如果不在同一台机器上&#xff0c;那么就需要配置Appium Server GUI所在机器的IP&#xff08;Appium Server GUI的HOST也需要配置本机IP&#xf…...

Java:JDK8新特性(Stream流)、File类、递归 --黑马笔记

一、JDK8新特性&#xff08;Stream流&#xff09; 接下来我们学习一个全新的知识&#xff0c;叫做Stream流&#xff08;也叫Stream API&#xff09;。它是从JDK8以后才有的一个新特性&#xff0c;是专业用于对集合或者数组进行便捷操作的。有多方便呢&#xff1f;我们用一个案…...

【Unity ShaderGraph】| 物体靠近时局部溶解,根据坐标控制溶解的位置【文末送书】

前言 【Unity ShaderGraph】| 物体靠近时局部溶解&#xff0c;根据坐标控制溶解的位置一、效果展示二、根据坐标控制溶解的位置&#xff0c;物体靠近局部溶解三、应用实例&#x1f451;评论区抽奖送书 前言 本文将使用ShaderGraph制作一个根据坐标控制溶解的位置&#xff0c;物…...

测试OpenSIPS3.4.3的lua模块

这几天测试OpenSIPS3.4.3的lua模块&#xff0c;记录如下&#xff1a; 有bug&#xff0c;但能用 但现实世界就是这样&#xff0c;总是不完美的&#xff0c;发现之后马上提了issue 下面这段代码运行报错&#xff1a; function func1(msg) xlog("ERR","…...

【机器学习】数据清洗之处理缺失点

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…...

Linux 命令行的世界 :2.文件系统中跳转

我们需要学习的第一件事&#xff08;除了打字之外&#xff09;是如何在 Linux 文件系统中跳转。在这一章节中&#xff0c;我们将介绍以下命令&#xff1a;pwd 打印出当前工作目录名 cd 更改目录 ls 列出目录内容 Linux以分层目录结构来组织所有文件。这就意味着所有文件…...

R语言:箱线图绘制(添加平均值趋势线)

箱线图绘制 1. 写在前面2.箱线图绘制2.1 相关R包导入2.2 数据导入及格式转换2.3 ggplot绘图 1. 写在前面 今天有时间把之前使用过的一些代码和大家分享&#xff0c;其中箱线图绘制我认为是非常有用的一个部分。之前我是比较喜欢使用origin进行绘图&#xff0c;但是绘制的图不太…...

Open3D 模型切片

目录 一、算法原理1、算法过程2、主要函数二、代码实现三、结果展示1、原始数据2、切片结果本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理...

KtConnect 本地连接连接K8S工具

KT Connect简介 Kt Connect &#xff08;Kubernetes Developer Tool&#xff09;是一个阿里开源、轻量级的面向 Kubernetes 用户的开发测试环境治理辅助工具。其核心是通过建立本地到集群以及集群到本地的双向通道。 1.阿里开源&#xff0c;轻量级, 2. 安装快捷简单&#xf…...

【Java万花筒】数据的安全钥匙:Java的加密与保护方法

编码的盾牌&#xff1a;Java开发人员的安全性武器库 前言 在当今数字化时代&#xff0c;保护用户数据和信息的安全已成为开发人员的首要任务。无论是在Web应用程序开发还是安全测试中&#xff0c;加密和安全性都是至关重要的。本文将介绍六个Java库和工具&#xff0c;它们为开…...

【Java多线程案例】实现阻塞队列

1. 阻塞队列简介 1.1 阻塞队列概念 阻塞队列&#xff1a;是一种特殊的队列&#xff0c;具有队列"先进先出"的特性&#xff0c;同时相较于普通队列&#xff0c;阻塞队列是线程安全的&#xff0c;并且带有阻塞功能&#xff0c;表现形式如下&#xff1a; 当队列满时&…...

【制作100个unity游戏之24】unity制作一个3D动物AI生态系统游戏3(附项目源码)

最终效果 文章目录 最终效果系列目录前言随着地面法线旋转在地形上随机生成动物不同部位颜色不同最终效果源码完结系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第24篇中,我们将探索如何用unity制作一…...

home work day5

第四章 堆与拷贝构造函数 一 、程序阅读题 1、给出下面程序输出结果。 #include <iostream.h> class example {int a; public: example(int b5){ab;} void print(){aa1;cout <<a<<"";} void print()const {cout<<a<<endl;} …...

c#安全-nativeAOT

文章目录 前记AOT测试反序列化Emit 前记 JIT\AOT JIT编译器&#xff08;Just-in-Time Complier&#xff09;,AOT编译器&#xff08;Ahead-of-Time Complier&#xff09;。 AOT测试 首先编译一段普通代码 using System; using System.Runtime.InteropServices; namespace co…...

2026年全国青少年信息素养大赛算法应用主题赛(C++赛项初赛模拟卷3:文末附答案)

2026年全国青少年信息素养大赛算法应用主题赛&#xff08;C赛项初赛模拟卷3&#xff1a;文末附答案&#xff09; 一、单选题 在C中&#xff0c;以下哪个关键字用于定义一个整型变量&#xff1f; A. int B. float C. char D. double 一支商队从长安出发&#xff0c;每天行进80里…...

Stable Diffusion v1.5 Archive 镜像实测:5步完成部署,快速体验文生图

Stable Diffusion v1.5 Archive 镜像实测&#xff1a;5步完成部署&#xff0c;快速体验文生图 1. 开篇&#xff1a;为什么选择SD1.5 Archive版本 Stable Diffusion作为当前最热门的开源AI绘画模型&#xff0c;已经迭代了多个版本。其中v1.5作为经典版本&#xff0c;在图像质量…...

OFA视觉问答模型惊艳效果:复杂背景中主物体识别与属性描述能力

OFA视觉问答模型惊艳效果&#xff1a;复杂背景中主物体识别与属性描述能力 1. 模型效果惊艳展示 OFA视觉问答模型在复杂场景中的表现令人印象深刻。这个模型能够准确识别图片中的主要物体&#xff0c;并详细描述其属性特征&#xff0c;就像有一个专业的图像分析师在为你解读图…...

微信小程序集成AI能力:调用LFM2.5-1.2B-Thinking-GGUF实现智能聊天与内容生成

微信小程序集成AI能力&#xff1a;调用LFM2.5-1.2B-Thinking-GGUF实现智能聊天与内容生成 1. 为什么要在小程序里集成AI 微信小程序作为轻量级应用平台&#xff0c;用户使用门槛低、传播效率高。但传统小程序功能相对单一&#xff0c;缺乏智能化交互体验。通过集成LFM2.5-1.2…...

OpenAI最新研究:为什么过程监督比结果监督更有效?手把手解析PRM800K数据集

OpenAI过程监督革命&#xff1a;PRM800K数据集如何重塑大模型对齐范式 数学解题过程中&#xff0c;大语言模型常常会犯下令人啼笑皆非的逻辑错误——得出正确答案却使用了完全错误的推理路径。这种现象在GPT-4等顶尖模型中依然存在&#xff0c;就像学生在考试中"蒙对"…...

封神级C++设计:用3个成员实现可清空、可恢复、零开销的容器(颠覆传统思维)

封神级C设计&#xff1a;用3个成员实现可清空、可恢复、零开销的容器&#xff08;颠覆传统思维&#xff09; 文章目录封神级C\\设计&#xff1a;用3个成员实现可清空、可恢复、零开销的容器&#xff08;颠覆传统思维&#xff09;一、传统方案的“坑”&#xff1a;要么笨重&…...

Kurento Media Server与OpenVidu集成:打造企业级视频会议系统

Kurento Media Server与OpenVidu集成&#xff1a;打造企业级视频会议系统 【免费下载链接】kurento-media-server [ARCHIVED] Contents migrated to monorepo: https://github.com/Kurento/kurento 项目地址: https://gitcode.com/gh_mirrors/ku/kurento-media-server K…...

Claude Code + PromptX 实战:如何让AI像你的最佳实习生一样写代码

Claude Code PromptX 实战&#xff1a;如何让AI像你的最佳实习生一样写代码 在软件开发领域&#xff0c;AI辅助编程已经从概念验证阶段迈入了实际生产力阶段。Claude Code与PromptX的组合&#xff0c;为开发者提供了一个强大的"虚拟实习生"——它不会抱怨加班&#…...

ArduinoFritzApi:嵌入式设备对接FRITZ!Box的TR-064协议实践

1. ArduinoFritzApi 库深度解析&#xff1a;面向嵌入式系统的 FRITZ!Box 自动化控制实践指南1.1 库定位与工程价值ArduinoFritzApi 是一个专为嵌入式平台设计的轻量级 C 库&#xff0c;其核心目标是实现对 AVM 公司全系智能家庭设备&#xff08;FRITZ!Box 路由器、FRITZ!DECT 插…...

开源吐槽大会:从抱怨到贡献的进化之路

开源项目吐槽大会&#xff1a;技术文章大纲技术背景与吐槽文化开源社区的协作模式与挑战 吐槽文化的价值&#xff1a;促进改进与社区互动 典型案例&#xff1a;知名项目的争议与改进常见吐槽点分析代码质量与可维护性问题 文档缺失或过时 社区响应速度与维护者态度 版本迭代与兼…...