实验八 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数据库的基本使用方法。

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

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

相关文章

python学opencv|读取图像(四十六)使用cv2.bitwise_or()函数实现图像按位或运算

【0】基础定义 按位与运算&#xff1a;全1取1&#xff0c;其余取0。按位或运算&#xff1a;全0取0&#xff0c;其余取1。 【1】引言 前序学习进程中&#xff0c;已经对图像按位与计算进行了详细探究&#xff0c;相关文章链接如下&#xff1a; python学opencv|读取图像&…

使用vhd虚拟磁盘安装两个win10系统

使用vhd虚拟磁盘安装两个win10系统 前言vhd虚拟磁盘技术简介准备工具开始动手实践1.winX选择磁盘管理2.选择“操作”--“创建VHD”3.自定义一个位置&#xff0c;输入虚拟磁盘大小4.右键初始化磁盘5.选择GPT分区表格式6.右键新建简单卷7.给卷起个名字&#xff0c;用于区分8.打开…

基于云计算、大数据与YOLO设计的火灾/火焰目标检测

摘要&#xff1a;本研究针对火灾早期预警检测需求&#xff0c;采用在Kaggle平台获取数据、采用云计算部署的方式&#xff0c;以YOLOv11构建模型&#xff0c;使用云计算服务器训练模型。经训练&#xff0c;box loss从约3.5降至1.0&#xff0c;cls loss从约4.0降至1.0&#xff0c…

计算机毕业设计Python+CNN卷积神经网络考研院校推荐系统 考研分数线预测 考研推荐系统 考研爬虫 考研大数据 Hadoop 大数据毕设 机器学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

小程序-基础加强-自定义组件

前言 这次讲自定义组件 1. 准备今天要用到的项目 2. 初步创建并使用自定义组件 这样就成功在home中引入了test组件 在json中引用了这个组件才能用这个组件 现在我们来实现全局引用组件 在app.json这样使用就可以了 3. 自定义组件的样式 发现页面里面的文本和组件里面的文…

docker安装emqx

emqx安装 拉取emqx镜像 docker pull emqx/emqx:v4.1.0 运行docker容器 docker run -tid --name emqx -p 1883:1883 -p 8083:8083 -p 8081:8081 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.1.0 放行端口 1、如果要是自己的虚拟机&#xff0c;并且关闭了防火墙&a…

【4Day创客实践入门教程】Day4 迈向高手之路——进一步学习!

Day4 迈向高手之路——进一步学习&#xff01; 目录 Day4 迈向高手之路——进一步学习&#xff01;更多的开发板外壳制作 Day0 创想启程——课程与项目预览Day1 工具箱构建——开发环境的构建Day2 探秘微控制器——单片机与MicroPython初步Day3 实战演练——桌面迷你番茄钟Day4…

深度学习之“缺失数据处理”

缺失值检测 缺失数据就是我们没有的数据。如果数据集是由向量表示的特征组成&#xff0c;那么缺失值可能表现为某些样本的一个或多个特征因为某些原因而没有测量的值。通常情况下&#xff0c;缺失值由特殊的编码方式。如果正常值都是正数&#xff0c;那么缺失值可能被标记为-1…

日志收集Day007

1.配置ES集群TLS认证: (1)elk101节点生成证书文件 cd /usr/share/elasticsearch ./bin/elasticsearch-certutil cert -out config/elastic-certificates.p12 -pass "" --days 3650 (2)elk101节点为证书文件修改属主和属组 chown elasticsearch:elasticsearch con…

arm-linux-gnueabihf安装

Linaro Releases windows下打开wsl2中的ubuntu&#xff0c;资源管理器中输入&#xff1a; \\wsl$gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz 复制到/home/ark01/tool 在 Ubuntu 中创建目录&#xff1a; /usr/local/arm&#xff0c;命令如下&#xff1a; …

LabVIEW透镜多参数自动检测系统

在现代制造业中&#xff0c;提升产品质量检测的自动化水平是提高生产效率和准确性的关键。本文介绍了一个基于LabVIEW的透镜多参数自动检测系统&#xff0c;该系统能够在单一工位上完成透镜的多项质量参数检测&#xff0c;并实现透镜的自动搬运与分选&#xff0c;极大地提升了检…

【算法】动态规划专题① ——线性DP python

目录 引入简单实现稍加变形举一反三实战演练总结 引入 楼梯有个台阶&#xff0c;每次可以一步上1阶或2阶。一共有多少种不同的上楼方法&#xff1f; 怎么去思考&#xff1f; 假设就只有1个台阶&#xff0c;走法只有&#xff1a;1 只有2台阶&#xff1a; 11&#xff0c;2 只有3台…

C++11(中)

新增默认成员函数 C11之前&#xff0c;默认成员函数有六个&#xff0c;构造函数&#xff0c;析构函数&#xff0c;拷贝构造&#xff0c;拷贝赋值重载&#xff0c;取地址重载&#xff0c;const 取地址重载。 C11增加了 移动构造 和 移动赋值重载 如果类没有实现移动构造&…

强化学习笔记——4策略迭代、值迭代、TD算法

基于策略迭代的贝尔曼方程和基于值迭代的贝尔曼方程&#xff0c;关系还是不太理解 首先梳理一下&#xff1a; 通过贝尔曼方程将强化学习转化为值迭代和策略迭代两种问题 求解上述两种贝尔曼方程有三种方法&#xff1a;DP&#xff08;有模型&#xff09;&#xff0c;MC&#xff…

计算机网络 笔记 网络层 3

IPv6 IPv6 是互联网协议第 6 版&#xff08;Internet Protocol Version 6&#xff09;的缩写&#xff0c;它是下一代互联网协议&#xff0c;旨在解决 IPv4 面临的一些问题&#xff0c;以下是关于 IPv6 的详细介绍&#xff1a; 产生背景&#xff1a; 随着互联网的迅速发展&…

【搜索回溯算法篇】:拓宽算法视野--BFS如何解决拓扑排序问题

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;搜索回溯算法篇–CSDN博客 文章目录 一.广度优先搜索&#xff08;BFS&#xff09;解决拓扑排…

23.Word:小王-制作公司战略规划文档❗【5】

目录 NO1.2.3.4 NO5.6​ NO7.8.9​ NO10.11​ NO12​ NO13.14 NO1.2.3.4 布局→页面设置对话框→纸张&#xff1a;纸张大小&#xff1a;宽度/高度→页边距&#xff1a;上下左右→版式&#xff1a;页眉页脚→文档网格&#xff1a;勾选只指定行网格✔→ 每页&#xff1a;…

视频脚本生成器(基于openai API和streamlit)

utils.py&#xff1a; # 所有和ai交互的代码放进utils.py里&#xff08;utils 通常是 “utilities” 的缩写&#xff0c;意为 “实用工具” 或 “实用函数”&#xff09;from langchain.prompts import ChatPromptTemplate from langchain_openai import ChatOpenAI from lan…

Android --- CameraX讲解

预备知识 surface surfaceView SurfaceHolder surface 是什么&#xff1f; 一句话来说&#xff1a; surface是一块用于填充图像数据的内存。 surfaceView 是什么&#xff1f; 它是一个显示surface 的View。 在app中仍在 ViewHierachy 中&#xff0c;但在wms 中可以理解为…

Longformer:处理长文档的Transformer模型

Longformer&#xff1a;处理长文档的Transformer模型 摘要 基于Transformer的模型由于自注意力操作的二次复杂度&#xff0c;无法处理长序列。为了解决这一限制&#xff0c;我们引入了Longformer&#xff0c;其注意力机制与序列长度呈线性关系&#xff0c;使其能够轻松处理数…