信息科学与工程学院计算机科学与技术2008-2班徐晓明200801050429J2EE实验报告一、实验目的1.认识JavaBean,初步了解JavaBean的应用,掌握JavaBean的特殊属性;2.用JavaBean编写简单的程序,在Jsp中使用JavaBean;3.了解DAO和VO,编写简单的DAO和VO;4.在JSP中使用DAO和VO。二、实验要求1.编写JavaBean:book.java,含有属性:bookid(String)bookname(String),bookprice(String),并编写getter,setter方法2.在数据库中建立表格T_BOOK(BOOKID,BOOKNAME,BOOKPRICE)插入一些记录;3.制作一个查询页面,输入两个数字,显示价格在两个数值之间的图书信息,使用DAO和VO实现;4.实现图书记录的删除功能,首先显示全部图书的资料,通过图书后面的“删除”功能链接,删除该图书记录,要求使用DAO和VO实现。三、实验相关知识1.认识JavaBean在JavaBean中,可以将控制逻辑、值、数据库访问和其他对象进行封装,并且其可以被其他应用来调用。实际上,JavaBean就是一种Java的组件技术。JavaBean的作用是向用户提供实现特定逻辑的方法接口,而具体的实现则封装在组件的内部,不同的用户就根据具体的应用情况来使用该组件的部分或者全部控制逻辑。JavaBean支持两种组件:可视化组件和非可视化组件。对于可视化组件,开发人员可以在运行的结果中看到界面效果;而非可视化组件一般不能观察到,其主要用在服务器端。JSP只支持费可视化组件。JavaBean有广义的和狭义的两种概念。广义的JavaBean是指普通的Java类;狭义的JavaBean是指严格按照JavaBean规范编写的Java类。2.编写JavaBean在JavaBean中不仅要定义其成员变量,还对成员变量定义了setter/getter方法。对于每一个成员变量,定义了一个getter方法,一个setter方法。JavaBean规定,成员变量的读写,通过getter和setter方法进行。此时,该成员变量成为属性。对于每一个可读属性,定义一个getter方法,而对于每一个可写属性,定义了一个setter方法。JavaBean组件属性编写时,需要满足:通过getter/setter方法来读/写变量的值,对应的变量首字母必须大写;属性名称由getter和setter方法决定。3.在JSP中使用JavaBean步骤定义JavaBean;使用jsp:useBean标签;设置Javabean属性;使用jsp:setProperty标签;获取JavaBean属性,包括使用JSP表达式或者JSP程序段和使用jsp:getProperty动作两种。5.DAO和VO如果要进行数据库查询,则必须在JSP中直接使用JDBC代码,来对数据库进行操作。但在实际的开发应用中处理方法是将访问数据库的操作放到特定的类中去处理,JSP作为表示层,可以再表示层中调用这个特定的类提供的方法,去对数据库进行操作。对数据库操作的类叫DAO类。将某个对象属性封装为一个XXX对象,该XXX对象就是一个VO类。使用此模式的好处:代码更容易维护,程序员的效率自然更高:在JSP内没有出现任何与JDBC有关的代码,编程人员不需要直达数据库的结构和细节,开发是便于分工。四、实验内容1.编写JavaBean:book.java,含有属性:bookid(String)bookname(String),bookprice(double),并编写getter,setter方法。实验代码如下:packagebeans;publicclassBook{privateStringbookid;privateStringbookname;privatedoublebookprice;publicStringgetBookid(){returnbookid;}publicvoidsetBookid(Stringbookid){this.bookid=bookid;}publicStringgetBookname(){returnbookname;}publicvoidsetBookname(Stringbookname){this.bookname=bookname;}publicdoublegetBookprice(){returnbookprice;}publicvoidsetBookprice(doublebookprice){this.bookprice=bookprice;}}2.在数据库中建立表格T_BOOK(BOOKID,BOOKNAME,BOOKPRICE)插入一些记录。CREATETABLET_BOOK(BOOKIDSTRINGNOTNULLPRIMARYKEY,BOOKNAMESTRINGNOTNULL,BOOKPRICEDOUBLENOTNULL)INSERTINTOT_BOOK(BOOKIDBOOKNAMEBOOKPRICE)VALUES(20080505,’J2EE与中间件’,56.00)3.制作一个查询页面,输入两个数字,显示价格在两个数值之间的图书信息;实现图书记录的删除功能,首先显示全部图书的资料,通过图书后面的“删除”功能链接,删除该图书记录,要求使用DAO和VO实现。实验代码如下:%@pagelanguage=javaimport=java.util.*,java.sql.*pageEncoding=UTF-8%%@pageimport=beans.Book,dao.BookDao%!DOCTYPEHTMLPUBLIC-//W3C//DTDHTML4.01Transitional//ENhtmlheadtitleShowBookByPrice/title/headbodyformaction=%=request.getRequestURI()%method=postinputtype=textname=price1value=/inputtype=textname=price2value=/inputtype=submitname=submitvalue=Query//form%if(request.getParameter(submit)!=null){Stringprice1=request.getParameter(price1);Stringprice2=request.getParameter(price2);doublep1=price1.isEmpty()?0:Double.parseDouble(price1);doublep2=price2.isEmpty()?Double.MAX_VALUE:Double.parseDouble(price2);BookDaobookDao=newBookDao();ArrayListBookbooks=bookDao.queryBookByPrice(p1,p2);%tableborder=2trtd名称/tdtd价格/tdtd/td/tr%for(inti=0;ibooks.size();i++){Bookbook=(Book)books.get(i);%trtd%=book.getBookname()%/tdtd%=book.getBookprice()%/tdtdahref=%=request.getRequestURI()%?deleteID=%=book.getBookid()%删除/a/td/tr%}}elseif(request.getParameter(deleteID)!=null){if(newBookDao().deleteBookByID(request.getParameter(deleteID))){out.println(删除成功!);}}%/tablebr/body/html五、实验总结通过本次试验,对JavaBean有了初步的认识,了解javaBean的应用并掌握JavaBean的一些特殊属性,能够用JavaBean编写简单程序并能够在JSP中使用JavaBean;初步了解JavaBean的适用范围,对Page、Request、Session、Application的适用范围初步了解;初步了解DAO和VO并能够在JSP中使用DAO和VO编写简单的程序,切实体会到DAO和VO的优点。