Web项目整合---实现增删查改

简介: Web项目整合---实现增删查改

关于web项目中如何实现增删查改的操作



这里我们以一个书城项目为例讲解


首先了解javaEE的三层架构


由图中我们可以看出,javaEE的三层架构严格的规定了项目中的每个模块,每个层需要完成的事情,这样会使项目的变得非常简洁,按部就班的完成每一部分,我们的项目也就很容易的完成,当然这这里说的只是针对非常简单的项目,对于大型项目就另当别论了。


增删查改之—-增Create


思维导图


详解

从图中我们可以看出,当客户端用户输入完数据之后请求就会发送给服务器,当服务器端BooServlet接受到来自add.html页面的请求后就会做出相应的相应,通过反射调用Add(req,resp)方法


在Add方法中


protected void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //1. 获取请求参数,封装成Book对象
    String name = req.getParameter("name");
    String author = req.getParameter("author");
    BigDecimal price = BigDecimal.valueOf(Double.parseDouble(req.getParameter("price")));
    Integer sales = Integer.valueOf(req.getParameter("sales"));
    Integer stock = Integer.valueOf(req.getParameter("stock"));
    Book book = new Book(null, name, author, price, sales, stock, null);
    //2. 调用bookService.addBook(book)将数据保存入数据库
    bookService.addBook(book);
    //3. 跳转回图书列表页面----又出现表单重复提交的bug
    resp.sendRedirect(req.getContextPath() + "/bookServlet?action=page&pageNo="+req.getParameter("pageNo"));
复制代码

这就是一个简单add方法的实现


增删查改之—-查Read


思维导图


1.在index上点击跳转到manager页面的请求,然后manager页面上显示响应【bookServlet?action=list】,然后服务器端就会收到响应


1.服务器端收到响应就会调用BookServlet的doPost方法,在doPost方法中显示的action收到的是list,然后后端就会调用list方法


2.在list方法中有三个步骤【


1.  通过BookService调用BookDao中的查询所有图书的方法(queryBooks),然后queryBooks再次调用BaseDao抽象类中的queryForList方法查找到所有图书。
2. 将查询到的所有图书保存到request域中
3.  通过请求转发,将保存的数据回传给前端book_manager.jsp页面
4.  book_manager.jsp页面收到转发的请求,通过el表达式,将数据显示出来
5.  最后,数据就会完美的呈现在面前


代码实现:


protected void list(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //1. 通过BookService查询所有的图书
    List<Book> books = bookService.queryBooks();
    //2. 保存所有的图书到request域中
    req.setAttribute("books",books);
    //3. 请求转发到book_manager.jsp
    req.getRequestDispatcher("book_manager.jsp").forward(req,resp);
}


增删查改之—-改Update


思维导图


首先点击修改,他将会调用doPost方法,将action值赋值为getBook


通过getBook()方法将id为XXX的数据获取出来然后显示在book_edit页面上。步骤有【


1> 获取请求的参数信息–图书编号


2> 调用BookService下的queryBookById()获取该图书的所有信息


3> 将数据保存在request作用域中


4> 请求转发到book_edit页面


  1. 通过上述步骤,在book_edit页面就会显示要修改的数据,接下来要做的就是将要修改的数据保存起来,然后再回传给客户端
  2. 将book_edit页面的隐藏域的value值修改为动态获取的值因为book_edit页面会是实现两个操作,修改与保存,所以回传的action值就因该动态的获取是add/update(判断的方法是id是否为空;添加的id为空)


这里我们回传的action值为update,所以再次回到BookServlet程序,这里我们调用的是doGet方法,然后通doGet在调用doPost 。通过doPost,因为action的值为update,所以这里我们调用update方法*


在update方法中要实现以下的及步骤【


1> 获取请求参数,封装成Book对象不能忘记id,修改的时候id值是存在的,我们得获取但是不能修改


2>通过BookService调用BookDao中的修改图书的方法(updateBook),然后updateBook再次调用BaseDao抽象类中的update方法将数据库中的数据修改保存


3> 重定向跳转回原来的页面


代码实现


protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    //获取请求参数,封装成Book对象
    Integer id= Integer.valueOf(req.getParameter("id"));
    String name = req.getParameter("name");
    String author = req.getParameter("author");
    BigDecimal price = BigDecimal.valueOf(Double.parseDouble(req.getParameter("price")));
    Integer sales = Integer.valueOf(req.getParameter("sales"));
    Integer stock = Integer.valueOf(req.getParameter("stock"));
    Book book = new Book(id, name, author, price, sales, stock, null);
    bookService.updateBook(book);
    //请求重定向
    resp.sendRedirect(req.getContextPath() + "/bookServlet?action=page&pageNo="+req.getParameter("pageNo"));
}


增删查改之—-删Delete


思维导图


1.服务器获取客户端要删除的数据的id


1.将请求发送至服务器,然后后端调用doPost方法,action传的值为delete

2.doPost方法,在其中执行这几步骤【

1> 获取请求参数 id


2>通过BookService调用BookDao中的添加图书的方法(deleteBookById),然后adeleteBookById再次调用BaseDao抽象类中的update方法将数据库中的数据删除


3>重定向跳转回原来的页面


代码实现


protected void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1. 获取请求参数 id
    Integer id = Integer.valueOf(req.getParameter("id"));
    //2. 调用BookService.deleteBookById()删除数据
    bookService.deleteBookById(id);
    //3. 重定向跳转回原来的页面
    resp.sendRedirect(req.getContextPath() + "/bookServlet?action=page&pageNo="+req.getParameter("pageNo"));
}
目录
相关文章
|
14天前
|
JavaScript 前端开发 开发工具
web项目规范配置(husky、eslint、lint-staged、commit)
通过上述配置,可以确保在Web项目开发过程中自动进行代码质量检查和规范化提交。Husky、ESLint、lint-staged和Commitlint共同作用,使得每次提交代码之前都会自动检查代码风格和语法问题,防止不符合规范的代码进入代码库。这不仅提高了代码质量,还保证了团队协作中的一致性。希望这些配置指南能帮助你建立高效的开发流程。
32 5
|
20天前
|
JavaScript 前端开发 数据安全/隐私保护
Web开发者必看:手把手教你如何轻松播放m3u8流地址,解锁视频播放新技能,让你的项目更上一层楼!
【10月更文挑战第23天】随着互联网技术的发展,m3u8格式因良好的兼容性和高压缩率被广泛用于网络流媒体传输。本文介绍如何在Web端播放m3u8流地址,包括引入视频播放器(如Video.js)、创建播放器容器、初始化播放器及播放m3u8流的具体步骤。此外,还涉及处理加密m3u8流的示例。
70 1
|
29天前
|
JSON 搜索推荐 API
Python的web框架有哪些?小项目比较推荐哪个?
【10月更文挑战第15天】Python的web框架有哪些?小项目比较推荐哪个?
48 1
|
1月前
|
前端开发 JavaScript API
惊呆了!学会AJAX与Fetch API,你的Python Web项目瞬间高大上!
在Web开发领域,AJAX与Fetch API是提升交互体验的关键技术。AJAX(Asynchronous JavaScript and XML)作为异步通信的先驱,通过XMLHttpRequest对象实现了局部页面更新,提升了应用流畅度。Fetch API则以更现代、简洁的方式处理HTTP请求,基于Promises提供了丰富的功能。当与Python Web框架(如Django、Flask)结合时,这两者能显著增强应用的响应速度和用户体验,使项目更加高效、高大上。
50 2
|
2月前
|
前端开发 Python
前后端分离的进化:Python Web项目中的WebSocket实时通信解决方案
在现代Web开发领域,前后端分离已成为一种主流架构模式,它促进了开发效率、提升了应用的可维护性和可扩展性。随着实时数据交互需求的日益增长,WebSocket作为一种在单个长连接上进行全双工通讯的协议,成为了实现前后端实时通信的理想选择。在Python Web项目中,结合Flask框架与Flask-SocketIO库,我们可以轻松实现WebSocket的实时通信功能。
56 2
|
1月前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
125 0
|
3月前
|
测试技术 开发者 Python
FastAPI的神奇之处:如何用Python引领Web开发的新浪潮,让你的项目一鸣惊人?
【8月更文挑战第31天】在现代软件开发中,Web应用至关重要,而FastAPI作为高性能Python Web框架,凭借简洁的语法与高效的开发体验,备受开发者青睐。本文将介绍FastAPI的基础概念、使用方法及最佳实践,涵盖路由、模板、请求对象等核心概念,并探讨其优势与社区扩展,助您高效构建Web应用。
113 1
|
3月前
|
存储 JSON 数据安全/隐私保护
"FastAPI身份验证与授权的奥秘:如何用Python打造坚不可摧的Web应用,让你的项目一鸣惊人?"
【8月更文挑战第31天】在现代Web开发中,保证应用安全性至关重要,FastAPI作为高性能Python框架,提供了多种身份验证与授权方式,包括HTTP基础认证、OAuth2及JWT。本文将对比这些机制并附上示例代码,展示如何使用HTTP基础认证、OAuth2协议以及JWT进行用户身份验证,确保只有合法用户才能访问受保护资源。通过具体示例,读者可以了解如何在FastAPI项目中实施这些安全措施。
138 1
|
3月前
|
存储 数据库 开发者
Web2py的神秘力量:如何用Python打造快速原型设计与开发,让你的项目一鸣惊人?
【8月更文挑战第31天】在现代软件开发中,快速原型设计至关重要。Web2py作为一款Python Web框架,凭借其简洁的语法和高效开发流程受到开发者青睐。本文通过在线调查问卷系统的案例,展示Web2py在快速原型设计中的应用,包括需求分析、数据库设计、表单创建及路由实现,并提供示例代码,帮助读者理解其最佳实践。
25 1
|
3月前
|
开发者 Java 安全
Struts 2 实战秘籍:Action 驱动业务,配置文件成就高效开发!
【8月更文挑战第31天】Struts 2 框架作为 Apache 软件基金会的顶级项目,广泛应用于企业级 Web 应用开发。其核心组件 Action 类处理用户请求,而配置文件定义请求与 Action 类间的映射关系。掌握 Action 组件的最佳实践包括继承 `ActionSupport` 类、实现 `execute` 方法及使用类型安全的方法;配置文件的最佳实践则涉及组织 Action 到包中、定义全局结果及使用通配符映射。遵循这些最佳实践,可构建高效、可维护的 Web 应用程序。
41 0