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

实验八 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.kler.cn/a/527506.html

相关文章:

  • Autogen_core源码:_agent_instantiation.py
  • MySQL CTE:解锁SQL查询新模式
  • 数据分析系列--④RapidMiner进行关联分析(案例)
  • stm32控制直流电机程序
  • 【漫话机器学习系列】069.哈达马乘积(Hadamard Product)
  • python | OpenCV小记(一):cv2.imread(f) 读取图像操作(待更新)
  • 【llm对话系统】大模型 Llama 源码分析之并行训练方案
  • 各种CNN 卷积特征图可视化理解方法(链接)
  • 网站标签页图标如何添加
  • SpringBoot 数据访问(MyBatis)
  • Java实战:图像浏览器
  • (三)QT——信号与槽机制——计数器程序
  • 51单片机CLD1602显示万年历+闹钟+农历+整点报时
  • 【B站保姆级视频教程:Jetson配置YOLOv11环境(五)Miniconda安装与配置】
  • 大厂面试题备份20250130
  • 【deepseek-r1】ollama如何更改安装位置以及自定义模型下载位置
  • Flink Forward Asia 2024 - 总结和展望(附PPT下载链接)
  • 游戏引擎 Unity - Unity 下载与安装
  • Ae 表达式语言引用:Marker Key
  • 深入解析 Linux 内核中的页面错误处理机制
  • 智慧园区如何利用智能化手段提升居民幸福感与环境可持续性
  • 【协议详解】卫星通信5G IoT NTN SIB32-NB 信令详解
  • FPGA|使用quartus II通过AS下载POF固件
  • 自然语言处理-词嵌入 (Word Embeddings)
  • git笔记-简单入门
  • C++ memset设置数组内容和memcpy拷贝数组内容的介绍与使用