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