实验8jdbc数据库访问Word格式.docx
- 文档编号:18156139
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:16
- 大小:99.75KB
实验8jdbc数据库访问Word格式.docx
《实验8jdbc数据库访问Word格式.docx》由会员分享,可在线阅读,更多相关《实验8jdbc数据库访问Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
,'
HeadFirstServlets&
JSP'
'
BryanBasham'
中国电力出版社'
98.00);
INSERTINTObooksVALUES
('
201'
Servlets与JSP核心教程'
HallMarty'
清华大学出版社'
45);
202'
Tomcat与JavaWeb开发技术祥解'
孙卫琴'
机械工业出版社'
203'
JSP应用开发技术'
柳永坡'
人民邮电出版社'
52);
205'
J2EE1.4编程指南'
SpielmanSue'
电子工业出版社'
68);
注意:
需要将数据库的JDBC驱动程序安装到应用程序的WEB-INF\lib目录中。
【步骤2】使用下面JSP页面displayBooks.jsp访问books表中的数据。
<
%@pagecontentType="
text/html;
charset=gb2312"
%>
%@pageimport="
java.sql.*"
%>
html>
head>
<
title>
DatabaseAccessTest<
/title>
/head>
body>
%
try{
Class.forName("
org.postgresql.Driver"
Stringdburl="
jdbc:
postgresql:
//localhost:
5432/bookstore"
;
Connectionconn=DriverManager.getConnection(dburl,"
bookstore"
"
Statementstmt=conn.createStatement();
Stringsql="
SELECT*FROMbooks"
;
ResultSetrs=stmt.executeQuery(sql);
out.println("
tableborder=1>
"
tr>
td>
书号<
/td>
书名<
作者<
价格<
/tr>
while(rs.next()){
+rs.getString
(1)+"
+rs.getString
(2)
+"
+rs.getString(3)
+rs.getString(5)+"
}
/table>
rs.close();
stmt.close();
conn.close();
}catch(Exceptione){
out.println(e.getMessage());
/body>
/html>
运用mysql的代码如下:
try{
Class.forName("
com.mysql.jdbc.Driver"
Stringdburl="
mysql:
3306/bookstore"
Connectionconn=DriverManager
.getConnection(dburl,"
root"
Statementstmt=conn.createStatement();
Stringsql="
ResultSetrs=stmt.executeQuery(sql);
out.println("
while(rs.next()){
out.println("
+rs.getString
(1)+"
+rs.getString
(2)+"
+rs.getString(3)
+"
+rs.getString(5)+"
}
rs.close();
stmt.close();
conn.close();
}catch(Exceptione){
out.println(e.getMessage());
}
图1displayBooks.jsp
(二)通过数据源访问数据库
需要将数据库的JDBC驱动程序安装到Tomcat安装目录的\lib目录中,并重新启动Tomcat服务器。
【步骤1】建立局部数据源
在Web应用程序中建立一个META-INF目录,在其中建立一个context.xml文件,内容如下:
?
xmlversion="
1.0"
encoding="
utf-8"
>
Contextreloadable="
true"
Resource
name="
jdbc/bookDS"
type="
javax.sql.DataSource"
maxActive="
4"
maxIdle="
2"
username="
maxWait="
5000"
driverClassName="
password="
url="
/>
/Context>
【步骤2】使用下面的JSP页面displayBooks.jsp访问数据库
java.sql.*,javax.sql.*,javax.naming.*"
DataSourceTest<
Contextcontext=newInitialContext();
DataSourceds=(DataSource)context.lookup("
java:
comp/env/jdbc/bookDS"
Connectionconn=ds.getConnection();
ResultSetrs=stmt.executeQuery("
图2displayBooks.jsp
(三)综合应用。
本实验采用MVC设计模式,通过数据源和DAO对象访问数据库。
其中JavaBeans实现模型,访问数据库,Servlet实现控制器,JSP页面实现视图。
∙模型包括2个JavaBean:
BookBean用于存放图书信息,BookDAO用于访问数据库。
∙控制器包括2个Servlet:
BookQueryServlet根据请求参数查询图书信息、BookInsertServlet用来向数据库中插入数据。
∙视图包括4个JSP页面:
bookQuery.jsp显示查询页面、bookInsert.jsp显示插入页面、display.jsp显示查询结果页面和errorPage.jsp显示错误页面。
【步骤1】存放图书信息的JavaBeans代码BookBean.java,它也是一个传输对象。
packagecom.beans;
importjava.io.*;
publicclassBookBeanimplementsSerializable{
privateStringbookid=null;
privateStringtitle=null;
privateStringauthor=null;
privateStringpublisher=null;
privatefloatprice=0.0F;
publicBookBean(){}
publicBookBean(StringbookId,Stringauthor,
Stringtitle,Stringpublisher,floatprice){
this.bookid=bookId;
this.title=title;
this.author=author;
this.publisher=publisher;
this.price=price;
}
publicStringgetBookid(){returnthis.bookid;
publicStringgetTitle(){returntitle;
publicStringgetAuthor(){returnthis.author;
publicfloatgetPrice(){returnprice;
publicStringgetPublisher(){returnpublisher;
publicvoidsetBookid(Stringbookid){this.bookid=bookid;
publicvoidsetTitle(Stringtitle){this.title=title;
publicvoidsetAuthor(Stringauthor){this.author=author;
publicvoidsetPrice(floatprice){this.price=price;
publicvoidsetPublisher(Stringpublisher){this.publisher=publisher;
【步骤2】下面的BookDAO是一个简单的JavaBeans,它实现数据库的访问。
importjava.sql.*;
importjavax.sql.*;
importjavax.naming.*;
importjava.util.ArrayList;
importcom.beans.BookBean;
publicclassBookDAO{
privatestaticInitialContextcontext=null;
privateDataSourcedataSource=null;
publicBookDAO(){
try{
if(context==null){
context=newInitialContext();
dataSource=(DataSource)context.lookup("
}catch(NamingExceptione2){
//根据书号查询图书信息
publicBookBeansearchBook(Stringbookid){
Connectionconn=null;
PreparedStatementpstmt=null;
ResultSetrst=null;
BookBeanbook=newBookBean();
try{
conn=dataSource.getConnection();
pstmt=conn.prepareStatement("
SELECT*FROMbooksWHEREbookid=?
pstmt.setString(1,bookid);
rst=pstmt.executeQuery();
if(rst.next()){
book.setBookid(rst.getString("
bookid"
));
book.setTitle(rst.getString("
title"
book.setAuthor(rst.getString("
author"
book.setPublisher(rst.getString("
publisher"
book.setPrice(rst.getFloat("
price"
returnbook;
}else{
returnnull;
}catch(SQLExceptionse){
returnnull;
}finally{
try{
conn.close();
}catch(SQLExceptionse){
}
//插入一本图书记录
publicbooleaninsertBook(BookBeanbook){
Connectionconn=null;
PreparedStatementpstmt=null;
conn=dataSource.getConnection();
pstmt=conn.prepareStatement(
"
INSERTINTObooksVALUES(?
?
)"
pstmt.setString(1,book.getBookid());
pstmt.setString(2,book.getTitle());
pstmt.setString(3,book.getAuthor());
pstmt.setString(4,book.getPublisher());
pstmt.setFloat(3,book.getPrice());
pstmt.executeUpdate();
pstmt.close();
returntrue;
returnfalse;
}catch(SQLExceptionse){}
【步骤3】下面的JSP页面bookQuery.jsp实现根据书号查询图书信息
BookQuery<
请输入一个书号:
br>
formaction="
bookquery.do"
method="
post"
inputtype="
text"
submit"
value="
提交"
/form>
图3bookQuery.jsp
【步骤4】下面的JSP页面bookInsert.jsp实现向数据库中插入数据
BookInsert<
h3>
请输入图书信息:
/h3>
%if(request.getAttribute("
result"
)!
=null)
out.print(request.getAttribute("
formaction="
bookinsert.do"
table>
>
出版社<
单价<
确定"
reset"
重置"
图4bookInsert.jsp
图5插入成功
【步骤5】显示查询结果的JSP页面display.jsp:
charset=gb2312"
jsp:
useBeanid="
book"
class="
com.beans.BookBean"
scope="
request"
书号:
getPropertyname="
property="
书名:
作者:
出版社:
价格:
图6显示查询结果
【步骤6】错误页面errorPage.jsp代码如下:
对不起,您查的图书不存在!
图7显示错误页面
【步骤7】下面的Servlet实现从请求参数获得书号,然后从数据库中查找该书,最后根据查询结果将请求转发到显示页面(display.jsp)或错误页面(errorPage.jsp)。
packagecom.control;
importjavax.servlet.*;
importjavax.servlet.http.*;
importcom.beans.BookDAO;
publicclassBookQueryServletextendsHttpServlet{
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
Stringbookid=request.getParameter("
BookDAObookdao=newBookDAO(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 jdbc 数据库 访问