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

基于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>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【前端 12】js事件绑定
  • openLayer(一):扇形绘制和旋转
  • 【音视频SDL2入门】创建第一个窗口
  • 从零搭建pytorch模型教程(八)实践部分(二)目标检测数据集格式转换
  • 函数初体验
  • Java8-求两个集合取交集
  • whaler_通过镜像导出dockerfile
  • 【我的OpenGL学习进阶之旅】讲一讲GL_TEXTURE_2D和GL_TEXTURE_EXTERNAL_OES的区别
  • 【Linux】管道通信和 system V 通信
  • 独占电脑资源来执行一个应用
  • 1111111111111111111111
  • uni-app全局文件与常用API
  • Redis在SpringBoot中配置
  • 【1.0】drf初识
  • 如何使用 API list 极狐GitLab 群组中的镜像仓库?
  • Apache Zeppelin在Apache Trafodion上的可视化
  • Bootstrap JS插件Alert源码分析
  • JS基础之数据类型、对象、原型、原型链、继承
  • nodejs调试方法
  • REST架构的思考
  • spring-boot List转Page
  • 对象管理器(defineProperty)学习笔记
  • 力扣(LeetCode)965
  • 手机端车牌号码键盘的vue组件
  • 源码安装memcached和php memcache扩展
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 如何用纯 CSS 创作一个货车 loader
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #单片机(TB6600驱动42步进电机)
  • (+4)2.2UML建模图
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (3)llvm ir转换过程
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (AngularJS)Angular 控制器之间通信初探
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)Linux——Linux常用指令
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm码农论坛 毕业设计 231126
  • (附源码)计算机毕业设计高校学生选课系统
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (十一)图像的罗伯特梯度锐化
  • (原)本想说脏话,奈何已放下
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • .Family_物联网
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .Net CF下精确的计时器
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET/C# 使用反射注册事件