web软件技术实验五.docx
- 文档编号:23312866
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:15
- 大小:62.85KB
web软件技术实验五.docx
《web软件技术实验五.docx》由会员分享,可在线阅读,更多相关《web软件技术实验五.docx(15页珍藏版)》请在冰豆网上搜索。
web软件技术实验五
《web软件技术》实验报告(9)
学号:
10123568姓名:
李智斌班级:
计123成绩:
实验名称:
JDBC访问数据库
实验地点:
信息楼215
所使用的工具软件及环境:
tomcat,MySQL,navicat,JCreator
一、实验目的:
1.掌握使用传统的方法访问数据库;
2.掌握使用数据源的方法访问数据库。
二、实验内容:
(一)使用传统方法通过JSP页面访问数据库
【步骤1】创建数据库。
假设在MySQL建立了一个名为bookstore的数据库,在其中建立books表,代码如下:
CREATETABLEbooks(
bookidcharacter(5)PRIMARYKEY,--书号
titletext,--书名
authorcharactervarying(20),--作者
publishercharactervarying(40),--出版社
pricereal--价格
);
向books表中插入几条记录,代码如下:
INSERTINTObooksVALUES
('204','HeadFirstServlets&JSP','BryanBasham','中国电力出版社',98.00);
INSERTINTObooksVALUES
('201','Servlets与JSP核心教程','HallMarty','清华大学出版社',45);
INSERTINTObooksVALUES
('202','Tomcat与JavaWeb开发技术祥解','孙卫琴','机械工业出版社',45);
INSERTINTObooksVALUES
('203','JSP应用开发技术','柳永坡','人民邮电出版社',52);
INSERTINTObooksVALUES
('205','J2EE1.4编程指南','SpielmanSue','电子工业出版社',68);
注意:
需要将数据库的JDBC驱动程序安装到应用程序的WEB-INF\lib目录中。
【步骤2】使用下面JSP页面displayBooks.jsp访问books表中的数据。
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport="java.sql.*"%>
<%
try{
Class.forName("com.mysql.jdbc.Driver");
Stringdburl="jdbc:
mysql:
//localhost:
3306/bookstore";
Connectionconn=DriverManager.getConnection(dburl,"bookstore","bookstore");
Statementstmt=conn.createStatement();
Stringsql="SELECT*FROMbooks";
ResultSetrs=stmt.executeQuery(sql);
out.println("
out.println("
while(rs.next()){
out.println("
(1)+"
(2)
+"
+"
}
out.println("");
rs.close();
stmt.close();
conn.close();
}catch(Exceptione){
out.println(e.getMessage());
}
%>
结果如下:
(二)通过数据源访问数据库
注意:
需要将数据库的JDBC驱动程序安装到Tomcat安装目录的\lib目录中,并重新启动Tomcat服务器。
【步骤1】建立局部数据源
在Web应用程序中建立一个META-INF目录,在其中建立一个context.xml文件,内容如下:
xmlversion="1.0"encoding="utf-8"?
>
name="jdbc/bookDS" type="javax.sql.DataSource" maxActive="4" maxIdle="2" username="bookstore" maxWait="5000" driverClassName="org.postgresql.Driver" password="bookstore" url="jdbc: postgresql: //localhost/bookstore"/> 【步骤2】使用下面的JSP页面displayBooks.jsp访问数据库 <%@pagecontentType="text/html;charset=gb2312"%> <%@pageimport="java.sql.*,javax.sql.*,javax.naming.*"%>
<%
try{
Contextcontext=newInitialContext();
DataSourceds=(DataSource)context.lookup("java:
comp/env/jdbc/bookDS");
Connectionconn=ds.getConnection();
Statementstmt=conn.createStatement();
ResultSetrs=stmt.executeQuery("SELECT*FROMbooks");
out.println("
out.println("
while(rs.next()){
out.println("
(1)+"
(2)
+"
+"
}
out.println("");
rs.close();
stmt.close();
conn.close();
}catch(Exceptione){
out.println(e.getMessage());
}
%>
结果如下:
(三)综合应用。
本实验采用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,它实现数据库的访问。
packagecom.beans;
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("java:
comp/env/jdbc/bookDS");
}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;
try{
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;
}catch(SQLExceptionse){
returnfalse;
}finally{
try{
conn.close();
}catch(SQLExceptionse){}
}
}
}
【步骤3】下面的JSP页面bookQuery.jsp实现根据书号查询图书信息
<%@pagecontentType="text/html;charset=gb2312"%>
请输入一个书号:
【步骤4】下面的JSP页面bookInsert.jsp实现向数据库中插入数据
<%@pagecontentType="text/html;charset=gb2312"%>
请输入图书信息:
<%if(request.getAttribute("result")!
=null)
out.print(request.getAttribute("result"));
%>
书号 | |
书名 | |
作者 | |
出版社 | |
单价 | |
【步骤5】显示查询结果的JSP页面display.jsp:
<%@pagecontentType="text/html;charset=gb2312"%>
useBeanid="book"class="com.beans.BookBean"scope="request"/>
书号:
getPropertyname="book"property="bookid"/> 书名: getPropertyname="book"property="title"/> 作者: getPropertyname="book"property="author"/> 出版社: getPropertyname="book"property="publisher"/> 价格: getPropertyname="book"property="price"/> 【步骤6】错误页面errorPage.jsp代码如下: <%@pagecontentType="text/html;charset=gb2312"%> 对不起,您查的图书不存在! 【步骤7】下面的Servlet实现从请求参数获得书号,然后从数据库中查找该书,最后根据查询结果将请求转发到显示页面(display.jsp)或错误页面(errorPage.jsp)。 packagecom.control; importjava.io.*; importjava.sql.*; importjavax.servlet.*; importjavax.servlet.http.*; importcom.beans.BookBean; importcom.beans.BookDAO; publicclassBookQueryServletextendsHttpServlet{ publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ Stringbookid=request.getParameter("bookid"); BookDAObookdao=newBookDAO(); BookBeanbook=bookdao.searchBook(bookid); if(book! =null){ request.getSession().setAttribute("book",book); RequestDispatcherview=request.getRequestDispatcher("/display.jsp"); view.forward(request,response); }else{ RequestDispatcherview=request.getRequestDispatcher("/errorPage.jsp"); view.forward(request,response); } } } 【步骤8】下面的Servlet实现向数据库插入数据,并将控制请求的转发到bookInsert.jsp页面。 packagecom.control; importjava.io.*; importjava.sql.*; importjavax.servlet.*; importjavax.servlet.http.*; importcom.beans.BookBean; importcom.beans.BookDAO; publicclassBookInsertServletextendsHttpServlet{ publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ request.setCharacterEncoding("gb2312"); Stringmessage=null; BookBeanbook=newBookBean( request.getParameter("bookid"),request.getParameter("title"), request.getParameter("author"),request.getParameter("publisher"), Float.parseFloat(request.getParameter("price")) ); BookDAObookdao=newBookDAO(); booleansuccess=bookdao.insertBook(book); if(success){ message="成功插入一条记录。 "; }else{ message="插入记录错误
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- web 软件技术 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)