基于JSP、java、Tomcat三者的项目实战--校园交易网(3)主页

前文功能的实现

 技术支持:JAVA、JSP

服务器:TOMCAT 7.0.86

编程软件:IntelliJ IDEA 2021.1.3 x64


前文三篇登录和注册功能的实现

基于JSP、java、Tomcat、mysql三层交互的项目实战--校园交易网(1)-项目搭建(前期准备工作)

基于JSP、java、Tomcat、mysql三层交互的项目实战--校园交易网(2)登录功能实现

基于JSP、java、Tomcat三者的项目实战--校园交易网(2)注册功能实现

基于JSP、java、Tomcat三者的项目实战--校园交易网(3)主页-CSDN博客


主页中我们其实看到了许多功能,我们先来说说

由于这么多功能,集中在这一个网页中,所以我也不水字数,主页的JSP文件在这篇博客中
基于JSP、java、Tomcat三者的项目实战--校园交易网(3)主页-CSDN博客


首先,我们是将所有的商品放在我的sdjyy的数据库中,接下来新建一个名为goods的数据表,里面的属性分别为name和price

由于我的数据库编码格式有点问题,在数据库中会显示问号。
但在网页和服务端调试时没有出现问题,问题应该是在我的数据库格式之中,我的数据库版本较低,无法应用utf8mb4。


所有我们先说的是在成功登录后,会呈现出数据库中所记录的表单list。

①-服务层所写的文件,代码

②-要呈现所有的商品,我们最主要的逻辑就是应用了dao层的findallgoods方法

服务层

listServlet

package Servlet;import dao.StudentDAO;
import entiy.Product;import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;public class listServlet extends HttpServlet {public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();try {StudentDAO dao = new StudentDAO();List<Product> products = dao.findAllgoods();request.setAttribute("goods",products);RequestDispatcher rd = request.getRequestDispatcher("shopping.jsp");rd.forward(request,response);} catch (Exception e) {e.printStackTrace();out.println("系统繁忙,请稍后再试!");}}
}

--用于处理客户端的请求并返回相应的商品列表

  1. Servlet基本信息

    • 这是一个名为 listServlet 的Servlet类,继承自 HttpServlet,用于处理客户端请求。
  2. 服务方法

    • service 方法重写了父类的方法,接收 HttpServletRequest 和 HttpServletResponse 对象作为参数,用于处理客户端的请求和返回响应。
  3. 响应设置

    • 使用 response.setContentType("text/html;charset=utf-8"); 设置响应内容类型为HTML,并指定UTF-8编码,确保正确显示中文字符。
  4. 数据库访问

    • 创建了一个 StudentDAO 的实例 dao,这通常是一个数据访问对象,用于访问数据库并执行查询操作。
    • 调用 dao.findAllgoods() 方法,该方法返回一个 List<Product>,即商品列表。
  5. 请求属性设置

    • 使用 request.setAttribute("goods", products); 将查询到的商品列表存储为请求属性,属性名为 "goods"。这样可以将数据传递给请求转发的目标页面。
  6. 请求转发

    • 创建 RequestDispatcher 对象 rd,并使用 request.getRequestDispatcher("shopping.jsp"); 获取到目标页面 "shopping.jsp" 的请求转发器。
    • 调用 rd.forward(request, response); 方法实现请求转发,将请求和响应传递给目标页面 "shopping.jsp",在该页面中可以使用 ${goods} 来获取存储在请求属性中的商品列表数据。
  7. 异常处理

    • 使用 try-catch 块捕获可能抛出的异常。如果发生异常,通过 e.printStackTrace(); 打印异常堆栈信息到控制台。
    • 在响应中输出 "系统繁忙,请稍后再试!" 提示用户系统暂时无法处理请求。

dao层


dao层findallgoods方法

public List<Product> findAllgoods() throws Exception {List<Product> products = new ArrayList<Product>();Connection conn = null;PreparedStatement prep = null;ResultSet rst = null;try {conn = DBUtil.getConnection();prep = conn.prepareStatement("select * from goods");rst = prep.executeQuery();while (rst.next()){int id = rst.getInt("id");String name = rst.getString("name");double price = rst.getDouble("price");Product e1 = new Product();e1.setId(id);e1.setName(name);e1.setPrice(price);products.add(e1);}} catch (Exception e) {e.printStackTrace();throw  e;}finally {DBUtil.close(conn);}return products;}

--这一段用于从数据库中查询所有商品信息并返回一个包含所有商品的列表 

通过 JDBC 与数据库进行交互,查询表 goods 中的所有商品信息,并将每个商品的 idnameprice 封装到 Product 对象中,最终以 List<Product> 的形式返回所有商品的信息。它利用了 JDBC 的基本功能和异常处理机制,同时确保了数据库连接在使用完毕后被正确关闭,是一个典型的数据库查询与处理代码片段。
 

    • 方法声明了一个 findAllgoods 方法,它返回一个 List<Product> 类型的集合,表示所有商品的列表。方法声明了抛出 Exception 异常,表示可能会有数据库连接或查询过程中的异常需要处理。
  1. 初始化了一个空的 ArrayList<Product>,用于存储查询到的商品信息。
  2. 声明了 ConnectionPreparedStatement 和 ResultSet,用于执行SQL查询并处理结果集。
    • 使用 DBUtil.getConnection() 获取数据库连接,DBUtil 可能是一个自定义的工具类,用于管理数据库连接。
    • 准备并执行查询语句 "select * from goods",将结果存储在 ResultSet rst 中。
  3. 使用 ResultSet 的 next() 方法遍历每一行结果。
  4. 从每行结果中提取商品的 idname 和 price
  5. 创建一个新的 Product 对象,设置其属性,并将其添加到 products 列表中。
  6. 如果在连接数据库、执行查询或处理结果集时发生异常,将异常打印出来,并重新抛出以通知调用者。
  7. 在 finally 块中调用 DBUtil.close(conn) 来确保数据库连接被正确关闭,以避免资源泄漏。
  8.  最后,将装有所有商品信息的 products 列表作为方法的返回值返回给调用者。

web-xml 

   <servlet><servlet-name>list</servlet-name><servlet-class>Servlet.listServlet</servlet-class></servlet><servlet-mapping><servlet-name>list</servlet-name><url-pattern>/list</url-pattern></servlet-mapping>

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

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

相关文章

Cisco路由器OSPF配置

Cisco路由器OSPF配置 本文已经迁移至 https://www.geekery.cn 本文档将详细介绍如何配置 OSPF&#xff08;开放最短路径优先&#xff09;协议&#xff0c;使用三个路由器&#xff1a;RA、RB 和 RC。一步一步说明每个路由器的配置、设置 IPv4 和 IPv6 地址的、配置OSPF 的启用以…

Cocos Creator2D游戏开发-(1)初始化设置

初心: 做一款微信或者抖音小游戏,然后发布,对于我来说这是一个新的赛道; 写这些文档的原因,记录一下自己学习过程,下次用的时候方便找 cocos creator版本: 3.8.3 当前小游戏飞机大战教程来源于: 抖音: 禅影 chanying001 源码目录: https://www.kdocs.cn/l/caLr6XCbEfPa 创建一个…

zeal 开发者离线文档工具

zeal是一款程序开发者不可或缺的离线文档查看器 下载地址 官网地址&#xff1a; windows版csdn下载(开箱即用含)&#xff1a;https://download.csdn.net/download/xzzteach/89588765 已离线 Android.docset Apache_HTTP_Server.docset Bash.docset Bootstrap_4.docset Bootst…

selenium入门超详细教程——网页自动化操作

文章目录 简介一、环境安装1.selenium安装2.安装浏览器驱动2.1 确定浏览器版本2.2 下载驱动 二、基础用法1.对页面进行操作1.1 初始化浏览器对象1.2 访问页面1.3 设置浏览器大小1.4 前进后退1.5 获取页面基础属性 2.定位页面元素3.模拟鼠标操作3.1 常用操作 4.模拟键盘操作4.1 …

测评Copilot和ChatGPT-4o从PDF创建PPT功能

关于 Copilot 由 PDF 创建 PPT&#xff0c;之前已经发过几篇文档说明&#xff1a; Copilot for Microsoft 365 现已支持从PDF创建Word和PPT Copilot读PDF文献一键生成PPT&#xff0c;吓傻了导师 Copilot一键将PDF转为PPT&#xff0c;治好了我的精神内耗 今天来测评对比 Cop…

在LabVIEW中使用Modbus

NI 提供了三种主要机制与 Modbus 设备进行接口&#xff1a;(1) 高级 OPC 服务器&#xff0c;(2) Modbus I/O 服务器&#xff0c;以及 (3) 在 NI LabVIEW 软件中通过 LabVIEW 实时或 LabVIEW 数据记录与监控控制&#xff08;DSC&#xff09;模块引入的低级 Modbus API。 LabVIE…

黑马Java零基础视频教程精华部分_8_学生管理系统

系列文章目录 文章目录 系列文章目录一、业务分析二、结合业务流程图编写代码1、Student.java代码&#xff1a;2、StudentSystem.java代码&#xff1a;3、标号&#xff08;‌label&#xff09;‌ 三、学生管理系统升级版 一、业务分析 需求文档如图所示&#xff1a; 根据需求…

【初阶数据结构篇】单链表的实现(赋源码)

文章目录 单链表的实现代码位置概念与结构概念&#xff1a;结构&#xff1a; 链表的性质链表的分类单链表的实现单链表的创建和打印及销毁单链表的创建单链表的打印单链表的销毁 单链表的插入单链表头插单链表尾插单链表在指定位置之前插入数据单链表在指定位置之后插入数据 单…

SAP MM学习笔记47 - 实地棚卸(库存盘点)

上一章讲了SAP MM模块种的出力管理&#xff08;消息管理&#xff09;。 SAP MM学习笔记46 - 购买中的出力管理(消息管理)-CSDN博客 本章讲库存盘点的相关内容。 - 库存盘点分3步走&#xff1a;实地棚卸票登录&#xff0c;检数入力&#xff0c;差异分析及转记 - SAP中还提供了…

学习笔记 韩顺平 零基础30天学会Java(2024.7.22)

P407 接口使用细节2 P407 接口课堂练习 对于最后一个的输出&#xff1a;B因为实现了A的接口&#xff0c;所以和继承一样&#xff0c;B可以访问A的变量 P409 接口VS继承 接口对单继承机制&#xff08;是指只能继承一个类&#xff09;进行了补充 也可以理解为&#xff0c;子类通过…

24种设计模式介绍与6大设计原则(电子版教程)

前言 您是一个初级的 coder,可以从中领会到怎么设计一段优秀的代码&#xff1b;您是一个高级程序员&#xff0c;可以从中全面了解到设计模式以及 Java 的边角技术的使用&#xff1b;您是一个顶级的系统分析师&#xff0c;可以从中获得共鸣&#xff0c;寻找到项目公共问题的解决…

安全哈希算法:SHA算法

&#x1f3af; 主题简介 SHA&#xff08;Secure Hash Algorithm&#xff09;是比MD5更安全的哈希算法。通过案例形式了解SHA算法的原理、实现方法及注意细节。无论你是Python爱好者还是JavaScript高手&#xff0c;这篇内容都将为你提供一个深入了解SHA算法的机会。 &#x1f…

Spring Boot集成screw实现数据库文档生成

1.什么是screw&#xff1f; 在企业级开发中、我们经常会有编写数据库表结构文档的时间付出&#xff0c;从业以来&#xff0c;待过几家企业&#xff0c;关于数据库表结构文档状态&#xff1a;要么没有、要么有、但都是手写、后期运维开发&#xff0c;需要手动进行维护到文档中&…

免费【2024】springboot 成都奥科厨具厂产品在线销售系统设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

【期末考试复习】学术英语阅读

文章目录 前言1. 一篇学术论文的组成部分2. this unit2.1 Unit 1 标题第一类&#xff1a;陈述句结构&#xff08;Declarative Sentence Structure&#xff09;第二类&#xff1a;名词群结构&#xff08;Nominal Group Construction&#xff09;第三类&#xff1a;复合结构&…

面向切面编程(AOP)

通知类型 Grep Console插件可右键选中日志高亮显示 正常情况 异常情况(around after和目标方法在一起&#xff0c;目标方法异常后&#xff0c;around after不执行) 通知顺序 execution 需要匹配两个没有任意交集的方法时&#xff0c;可以使用两个execution annotation 自定义…

面试 SQL整理 常见的SQL面试题:大厂经典60题(一)

目录 SQL基础知识整理: 数据库基础知识 为什么要使用数据库 数据保存在内存 数据保存在文件 数据保存在数据库 什么是SQL&#xff1f; 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 MySQL的binlog有有几种录入格式&#xff1f;分别有什么区别&…

搭建自己的金融数据源和量化分析平台(一):系统架构设计

0x00 前言 由于某得的数据实在是太贵&#xff0c;某花顺免费版又不提供专业的数据分析工具&#xff0c;Tushare也开始收费&#xff0c;因此决定基于python和MySQL搭建一个自己的金融数据库。期望做到仅依靠交易所、巨潮资讯网等官方的公开数据实现&#xff0c;尽量不依靠某花顺…

绿联UGOS Pro系统虚拟机部署Windows 11详细教程(跳账户登录,安装内存驱动)

绿联UGOS Pro系统虚拟机部署Windows 11详细教程&#xff08;跳账户登录&#xff0c;安装内存驱动&#xff09; 哈喽小伙伴们好&#xff0c;我是Stark-C~ 自从绿联更新UGOS Pro系统之后&#xff0c;简直犹如脱胎换骨般&#xff0c;为大家带来了前所未有的全新体验&#xff0c;…