实验八 JSP访问数据库
实验八 JSP访问数据库
目的:
1、熟悉JDBC的数据库访问模式。
2、掌握使用My SQL数据库的使用
实验要求:
1、通过JDBC访问mysql数据,实现增删改查功能的实现
2、要求提交实验报告,将代码和实验结果页面截图放入报告中
实验过程:
一、安装Mysql,设置好数据库的账户和密码
不需要创建一个账户,选择skip sing-up即可。

对数据库服务器在访问有端口,账户名称和密码进行设置。

手工选择中文字符集2312

给数据库服务器的root账户设置密码。




二、JSP访问数据库的步骤:
①加载数据库驱动程序;
②建立连接对象;
③创建语句对象;
④获得结果集;
⑤关闭有关连接对象。
三、实现书籍信息的查询和展示
1、新增数据库DBStore,新增一张表book,包含书籍编号、书籍名称、书籍描述、书籍价格等字段(供参考,可以按需要增加其他字段),并为book表添加一些记录。

建表如下:
create table book(id int primary key comment '记录id',bookno varchar(32) comment '书籍编号',bookname varchar(32) comment '书名',bookdescription varchar(128) comment '书籍描述',cost decimal comment '价格'
);
插入数据:
insert into book values
(01,'01','西游记','《西游记》第一部浪漫主义长篇神魔小说','88'),
(01,'02','红楼梦','《红楼梦》,中国古典四大名著之一','68'),
(01,'03','三国演义','《三国演义》,中国文学史上第一部章回小说','78');
结果:

2、结合实验7的购物车实验,编写书籍的查询逻辑,使得书籍展示页面的内容可以根据数据库中已有的书籍信息进行展示。
核心代码
<%@ page import="java.util.HashMap" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.DriverManager" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %><head><title>Title</title>
</head>
<body>
<html>
<head><title>Title</title><script>function loginfun() {window.location.href="Login.jsp"}function Shoppingcarfun() {window.location.href="Shoppingcar.jsp"}function Payfun() {window.location.href="Pay.jsp"}</script>
</head>
<body>
<H2 align="center"><欢迎来到购物商城></欢迎来到购物商城></H2>
<element align="right"><form name="f" action="which.jsp" method="get"><input type="button" value="登录" onclick="loginfun()"><input type="button" value=" 查看购物车 "onclick="Shoppingcarfun()"><input type="button" value="结算" onclick="Payfun()"></form>
</element>
<table border="1" bgcolor="#faebd7" align="center" cellpadding="30"><tr><th>书名</th><th>介绍</th><th>价格</th><td>是否加入购物车</td></tr><%Connection con = null;Statement stmt = null;ResultSet rs = null;Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/bdstore?useUnicode=true&characterEncoding=gbk";con = DriverManager.getConnection(url,"root","123456");stmt = con.createStatement();String sql = "select * from book";rs = stmt.executeQuery(sql);while(rs.next()){%><tr><td><%=rs.getString("bookname")%></td><td><%=rs.getString("bookdescription")%></td><td><%=rs.getString("cost")%></td><td><a href="BookShow.jsp?book_name=<%=rs.getString("bookname")%>">加入购物车</a></td></tr><%}rs.close();stmt.close();con.close();%>
</table>
<%//booksprice:用于 Pay.jsp 结算页面中提取对应书名的单价
HashMap<String, Integer> booksprice=new HashMap<>();booksprice.put("西游记",88);booksprice.put("红楼梦",68);booksprice.put("三国演义",78);session.setAttribute("booksprice",booksprice);//books:存放用户所购置的书及其对应的数量 → 即 HashMap 中的键值对为:书名 = 数量//从 session 获取 books 如果为空则需要实例化HashMap<String,Integer> books = (HashMap)session.getAttribute("books");//HashMap<String,Integer> books = null;if(books==null){books = new HashMap<>();books.put("西游记",0);books.put("红楼梦",0);books.put("三国演义",0);session.setAttribute("books",books);}//获取书名String book = request.getParameter("book_name");if(book!=null){//根据书名获取 books 的数量 → 即根据 键:书名 获取 值 :数量Integer number = books.get(book);number = number+1;books.put(book,number);session.setAttribute("books",books);}
%>
</html>
</body>
结果:


四、实验心得。
本次实验旨在通过实践熟悉JDBC的数据库访问模式,并掌握MySQL数据库的基本使用方法。
相关文章:
实验八 JSP访问数据库
实验八 JSP访问数据库 目的: 1、熟悉JDBC的数据库访问模式。 2、掌握使用My SQL数据库的使用 实验要求: 1、通过JDBC访问mysql数据,实现增删改查功能的实现 2、要求提交实验报告,将代码和实验结果页面截图放入报告中 实验过程&a…...
Day31-【AI思考】-关键支点识别与战略聚焦框架
文章目录 关键支点识别与战略聚焦框架**第一步:支点目标四维定位法****第二步:支点验证里程碑设计****第三步:目标网络重构方案****第四步:动态监控仪表盘** 执行工具箱核心心法 关键支点识别与战略聚焦框架 让思想碎片重焕生机的…...
DeepSeek与其他大模型相比
DeepSeek与其他大模型相比 与GPT-4对比 性能方面 推理速度:DeepSeek在解决复杂的数学、物理和逻辑推理问题方面速度惊人,是ChatGPT的两倍。“幻觉”现象:在处理需要网络信息检索的任务时,DeepSeek的“幻觉”现象似乎比ChatGPT更少。创意任务:ChatGPT在创意性任务,如创作…...
在深度Linux (Deepin) 20中安装Nvidia驱动
文章创作不易,麻烦大家点赞关注收藏一键三连。 在Deepin上面跑Tensorflow, pytorch等人工智能框架不是一件容易的事情。特别是如果你要使用GPU,就得有nvidia的驱动。默认情况下Deepin系统自带的是nouveau开源驱动。这是没办法用tensorflow的。下面内容是…...
“LoRA技术中参数初始化策略:为何A参数采用正态分布而B参数初始化为0”
在LoRA(Low-Rank Adaptation)中,参数A和B的初始化策略是经过精心设计的,以确保模型训练的稳定性和有效性。具体来说,参数A通常被初始化为正态分布,而参数B则初始化为0。这样的设计有以下几个优点࿱…...
C语言初阶力扣刷题——349. 两个数组的交集【难度:简单】
1. 题目描述 力扣在线OJ题目 给定两个数组,编写一个函数来计算它们的交集。 示例: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2] 输入:nums1 [4,9,5], nums2 [9,4,9,8,4] 输出:[9,4] 2. 思路 直接暴力…...
理解动手学深度学习的自编包d2l
跟着李沐的《动手学深度学习-PyTorch版》入门Python编程和Pytorch框架,以前是重度Matlab用户,对于Python里的各种包很不习惯。特别是,本书还自己做了一个名为d2l包,有几个问题很是困惑。今天终于弄明白了,写在这里&…...
RK3568使用opencv(使用摄像头捕获图像数据显示)
文章目录 一、opencv相关的类1. **cv::VideoCapture**2. **cv::Mat**3. **cv::cvtColor**4. **QImage**5. **QPixmap**总结 二、代码实现 一、opencv相关的类 1. cv::VideoCapture cv::VideoCapture 是 OpenCV 中用于视频捕捉的类,常用于从摄像头、视频文件、或者…...
OpenEuler学习笔记(十六):搭建postgresql高可用数据库环境
以下是在OpenEuler系统上搭建PostgreSQL高可用数据环境的一般步骤,通常可以使用流复制(Streaming Replication)或基于Patroni等工具来实现高可用,以下以流复制为例: 安装PostgreSQL 配置软件源:可以使用O…...
数学平均数应用
给定一个长度为 n 的数组 a。在一次操作中,你可以从索引 2 到 n−1中选择一个索引i,然后执行以下两个操作之一: 将 a[i−1] 减少 1,同时将 a[i1] 增加 1。 将 a[i1] 减少 1,同时将 a[i−1] 增加 1。 在每次操作后&…...
元旦和春节取名的历史变迁
在中国漫长的历史长河中的春节,真要追溯起来也只有一百多年历史——是从晚清时期才逐渐出现在国人的生活里的,而且那时不叫“春节”而叫“元旦”。只不过随着历史的发展过程,“过年”这个名词也一直在演变,直至1949年最终才定下来…...
USB鼠标的数据格式
USB鼠标的数据格式由HID(Human Interface Device)协议定义,通常包含3个字节的标准数据,具体格式如下: 字节内容描述第1字节按键状态Bit 0: 左键按下(1)<br>Bit 1: 右键按下(1…...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.27 线性代数王国:矩阵分解实战指南
1.27 线性代数王国:矩阵分解实战指南 #mermaid-svg-JWrp2JAP9qkdS2A7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-JWrp2JAP9qkdS2A7 .error-icon{fill:#552222;}#mermaid-svg-JWrp2JAP9qkdS2A7 .erro…...
Kafka常见问题之 java.io.IOException: Disk error when trying to write to log
文章目录 Kafka常见问题之 java.io.IOException: Disk error when trying to write to log1. 问题概述2. 问题排查方向(1)磁盘空间不足(2)磁盘 I/O 故障(3)Kafka 日志文件损坏(4)Kaf…...
libOnvif通过组播不能发现相机
使用libOnvif库OnvifDiscoveryClient类, auto discovery new OnvifDiscoveryClient(QUrl(“soap.udp://239.255.255.250:3702”), cb.Build()); 会有错误: end of file or no input: message transfer interrupted or timed out(30 sec max recv delay)…...
Flink (十二) :Table API SQL (一) 概览
Apache Flink 有两种关系型 API 来做流批统一处理:Table API 和 SQL。Table API 是用于 Scala 和 Java 语言的查询API,它可以用一种非常直观的方式来组合使用选取、过滤、join 等关系型算子。Flink SQL 是基于 Apache Calcite 来实现的标准 SQL。无论输入…...
FFmpeg(7.1版本)的基本组成
1. 前言 FFmpeg 是一个非常流行的开源项目,它提供了处理音频、视频以及其他多媒体内容的强大工具。FFmpeg 包含了大量的库,可以用来解码、编码、转码、处理和播放几乎所有类型的多媒体文件。它广泛用于视频和音频的录制、转换、流媒体传输等领域。 2. F…...
基于微信小程序的辅助教学系统的设计与实现
标题:基于微信小程序的辅助教学系统的设计与实现 内容:1.摘要 摘要:随着移动互联网的普及和微信小程序的兴起,基于微信小程序的辅助教学系统成为了教育领域的一个新的研究热点。本文旨在设计和实现一个基于微信小程序的辅助教学系统,以提高教…...
单片机基础模块学习——超声波传感器
一、超声波原理 左边发射超声波信号,右边接收超声波信号 左边的芯片用来处理超声波发射信号,中间的芯片用来处理接收的超声波信号 二、超声波原理图 T——transmit 发送R——Recieve 接收 U18芯片对输入的N_A1信号进行放大,然后输入给超声…...
HTML<hgroup>标签
例子: 使用hgroup元素标记标题和段落是相关的: <hgroup> <h2>Norway</h2> <p>The land with the midnight sun.</p> </hgroup> 定义和用法: 标签<hgroup>用于包围标题和一个或多个<p&g…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
