JAVAEE实验报告3 石博洋.docx
《JAVAEE实验报告3 石博洋.docx》由会员分享,可在线阅读,更多相关《JAVAEE实验报告3 石博洋.docx(13页珍藏版)》请在冰豆网上搜索。
JAVAEE实验报告3石博洋
《JavaEE与中间件技术专题实验》课程
实验报告三
班级:
计算机1602班学号:
201610333姓名:
石博洋
实验内容:
1.综合应用。
本实验采用MVC设计模式,通过数据源和DAO对象访问数据库。
其中JavaBeans实现模型,访问数据库,JSP(实现业务逻辑,不输出任何内容;学习Servlet之后使用Servlet)实现控制器,JSP页面实现视图。
模型包括2个JavaBean:
BookBean用于存放图书信息,BookDAO用于访问数据库。
控制器包括2个JSP:
BookQueryProcess.jsp根据请求参数查询图书信息、BookInsertProcess.jsp用来向数据库中插入数据。
视图包括4个JSP页面:
bookQuery.jsp显示查询页面、bookInsert.jsp显示插入页面、display.jsp显示查询结果页面和errorPage.jsp显示错误页面。
(查询页面需要支持模糊查询;组合查询(可对任意字段组合进行查询)作为加分项)
1、给出实现的方案。
本次项目将由2个JavaBean(BookBean用于存放图书信息,BookDAO用于访问数据库),2个JSP(BookQueryProcess.jsp根据请求参数查询图书信息、BookInsertProcess.jsp用来向数据库中插入数据),4个JSP页面(bookQuery.jsp显示查询页面、bookInsert.jsp显示插入页面、display.jsp显示查询结果页面和errorPage.jsp显示错误页面),,JavaBeans实现模型,访问数据库,JSP实现控制器,JSP页面实现视图。
二、设计效果(截图,需要附加说明文字)
图1查询界面
图2输入所要查询的书号
图3查询结果
图4增加图书页面
图5输入图书信息
图6添加成功
图7数据库存储信息
三、按文件给出每一个JSP页面的核心源码。
1.bookQuery.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
DOCTYPEhtml>
查询图书信息请输入一个书号:
2.BookQueryServlet.jsp
<%@pagelanguage="java"import="com.bean.*"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
DOCTYPEhtml>
Inserttitlehere<%
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);
}
%>
3.bookInsert.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
DOCTYPEhtml>
插入数据请输入图书信息:
<%if(request.getAttribute("result")!
=null)
out.print(request.getAttribute("result"));
%>
4.BookInsertServlet.jsp
<%@pagelanguage="java"import="com.bean.*"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>
DOCTYPEhtml>
Inserttitlehere<%
request.setCharacterEncoding("utf-8");
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="插入记录错误!
";
}
request.setAttribute("result",message);
RequestDispatcherview=request.getRequestDispatcher("/bookInsert.jsp");
view.forward(request,response);
%>
5.display.jsp
<%@pagecontentType="text/html;charset=utf-8"%>
useBeanid="book"class="com.bean.BookBean"scope="session"/>
查询页面
书号:
getPropertyname="book"property="bookid"/>
书名:
getPropertyname="book"property="title"/>
作者:
getPropertyname="book"property="author"/>
出版社:
getPropertyname="book"property="publisher"/>
价格:
getPropertyname="book"property="price"/>
6.displayBooks.jsp
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport="java.sql.*"%>
访问数据库
<%
try{
Class.forName("com.mysql.jdbc.Driver");
Stringdburl="jdbc:
mysql:
//localhost:
3306/db_bookstore";
Connectionconn=DriverManager.getConnection(dburl,"root","root");
Statementstmt=conn.createStatement();
Stringsql="SELECT*FROMbooks";
ResultSetrs=stmt.executeQuery(sql);
out.println("");
out.println("
书号 | 书名 | 作者 | 价格 |
");
while(rs.next()){
out.println("
"+rs.getString (1)+" | "+rs.getString (2) +" | "+rs.getString(3)+" | "+rs.getString(5)+" |
");
}
out.println("");
rs.close();
stmt.close();
conn.close();
}catch(Exceptione){
out.println(e.getMessage());
}
%>
7.errorPage.jsp
对不起,您查的图书不存在!
8.BookBean.java
packagecom.bean;
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;}
}
9.BookDAO.java
packagecom.bean;
importjava.sql.*;
importjavax.sql.*;
importjavax.naming.*;
importjava.util.ArrayList;
importcom.bean.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{
rst.close();
pstmt.close();
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(5,book.getPrice());
pstmt.executeUpdate();
returntrue;
}catch(SQLExceptionse){
returnfalse;
}finally{
try{
pstmt.close();
conn.close();
}catch(SQLExceptionse){}
}
}
}
四、实验过程中遇到的问题及解决办法。
1.遇到的问题:
无法连接到数据库
解决办法:
修改context.xml连接数据库的密码。
2.遇到的问题:
页面之间跳转出现问题
解决办法:
修改action里面的路径。
3.遇到的问题:
数据库存储的数据乱码
解决办法:
修改字符集,使数据库与程序保持一致
五、实验总结。
在本次实验中,我们主要学习了如何运用传统的JDBC访问数据库,该方法主要是通过JSP页面访问数据库。
数据库作为Web应用过程当中的一个重要分支,对它的掌握与运用意义深远,应当熟练的掌握这个访问,以便为今后学习Web的过程中提供坚实的基础。