Jsp综合性实验报告.doc

上传人:飞****2 文档编号:56716690 上传时间:2022-11-03 格式:DOC 页数:18 大小:391.50KB
返回 下载 相关 举报
Jsp综合性实验报告.doc_第1页
第1页 / 共18页
Jsp综合性实验报告.doc_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《Jsp综合性实验报告.doc》由会员分享,可在线阅读,更多相关《Jsp综合性实验报告.doc(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、JSP综合性实验报告计算机与信息技术学院综合性、设计性实验报告课程名称JSP程序设计指导教师本组成员学号姓名实验地点实验时间2011-11-23至2011-12-13项目名称查询、更新、添加、删除记录实验类型综合性一、 实验目的本实验旨在学习在JSP技术中怎样使用数据库,包括查询、更新、添加、删除记录等。二、 实验仪器或设备计算机一台三、 总体设计设计原理:在许多Web应用中,服务器需要和用户进行必要的数据交互,例如,服务器需要将用户提供的数据永久、安全地保存在服务器端,需要为用户提供数据查询等,此时,Web应用就可能需要和数据库打交道,其原因是数据库在数据查询、修改、保存、安全等方面有着其他

2、数据处理手段无法替代的地位。本实验就是说明在JSP技术中怎样使用数据库的综合性实验。四、 实验步骤(包括主要步骤、代码分析等)A、首页面编写一个首页面,负责与编写好的的随机查询、更新记录、添加记录、删除记录进行链接,点击不同的链接会跳转到不同的页面进行操作。zonghe.jsp/page指令用来定义整个JSP页面的一些属性和这些属性的值body background:url(A.jpg) norepeat;/添加背景图片 随机查询 更新记录 添加记录 删除记录 代码分析:page指令用来定义整个JSP页面的一些属性和这些属性的值,page指令标记可以指定如下属性的值:contentType、i

3、mport、language、session、buffer、auotFlush、isThreadSafe、pageEncoding。属性值需用单引号或双引号括起来,但需要注意的是:可以使用多个page指令指定import属性几个值,但其他属性只能使用page指令指定一个值。page指令对整个页面都有效,与其书写的位置无关,但习惯把page指令写在JSP页面的最前面。language:定义JSP页面使用的脚本语言,该属性值目前只能取JAVAimport:该属性的作用是为JSP页面引入Java核心包中的类contentType:属性值确定JSP页面响应MIME类型和JSP页面字符编码session

4、:用于设置是否需要使用内置的session对象auotFlush:指定out的缓冲区被填满时,缓冲区是否自动刷新isThreadSafe:用来设置JSP页面是否可多线程访问首页面效果图:要操作的表:B、随机查询example6-4.jsp 随机查询记录. 输入数据库名: 输入表的名字: 输入用户名:(默认是sa) 输入密码:(默认是sa) 输入查询的记录数: random.jsp inquire:RandomQuerydatabaseName=tableName= user= password= count=/ 在表随机查询到条记录: RandomQuery.tag % Vector vect

5、or=new Vector(); StringBuffer result; result=new StringBuffer(); try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(Exception e) Connection con; Statement sql; ResultSet rs; int n=0; try result.append(); String uri=jdbc:odbc:mystar; con=DriverManager.getConnection(uri,user,password); DatabaseMet

6、aData metadata=con.getMetaData(); ResultSet rs1=metadata.getColumns(null,null,tableName,null); int 字段个数=0; result.append(); while(rs1.next() 字段个数+; String clumnName=rs1.getString(4); result.append(+clumnName+); result.append(); sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCU

7、R_READ_ONLY); rs=sql.executeQuery(SELECT * FROM +tableName); rs.last(); int rowNumber=rs.getRow(); int number=rowNumber; /获取记录数 for(int i=1;i0) int i=(int)(Math.random()*vector.size(); /从vector中随机抽取一个元素: int index=(Integer)vector.elementAt(i).intValue(); rs.absolute(index); /游标移到这一行 result.append();

8、 for(int k=1;k=字段个数;k+) result.append(+rs.getString(k)+); result.append(); m-; vector.removeElementAt(i); /将抽取过的元素从vector中删除 result.append(); con.close(); catch(SQLException e) result.append(请输入正确的用户名和密码); jspContext.setAttribute(queryResult,new String(result);/返回queryResult对象 jspContext.setAttribut

9、e(biao,tableName);/返回biao对象 jspContext.setAttribute(randomCount,String.valueOf(n);/返回randomCount对象 %代码分析:example6-4.jsppage指令用来定义整个JSP页面的一些属性和这些属性的值,page指令对整个页面都有效,与其书写的位置无关,但习惯把page指令写在JSP页面的最前面。Web服务目录下的一个JSP页面在使用Tag标记来调用一个Tag文件之前,必须首先使用taglib指令标记引入该Web服务目录下的标记库,只有这样,JSP页面才可以使用Tag标记调用相应的Tag文件。一个JS

10、P页面可以使用几个taglib指令标记引入若干个标记库。输入数据库名: /提交手段用户在请求JSP页面时,通常会使用HTML表单提交信息,其中是表单标记,method可取get或post,使用get方法提交的信息会在提交的过程中显示在浏览器的地址栏中,而使用post方法提交的信息不会显示在地址栏中,提交手段包括通过文本框、列表、文本区等。程序中的表单使用post方法请求random.jsp页面,提交信息的手段是在文本框输入信息,用户单击“提交”按钮请求random.jsp页面,并向random.jsp提交信息。random.jsp设置背景的颜色和显示的字号random.jsp页面可以使用内置r

11、equest对象获得用户提交的信息,例如request对象可以使用getParameter(String s)方法获得该表单通过text提交的信息。RandomQuery.tagTag文件通过使用tag指令可以指定某些属性的值,以便从总体上影响Tag文件的处理和表示pageEncoding:该属性的值可以指定Tag文件的字符编码import:属性的作用是为Tag文件引入Java核心包中的类在Tag文件中通过使用attribute指令,可以让使用它的JSP页面向该Tag文件传递需要的数据。attribute指令中的name属性是必需的,该属性值是一个对象的名字。JSP页面在调用Tag文件时,可向

12、name属性指定的对象传递一个引用。attribute指令中的required属性默认值是false,当指定required的值是true是,调用该Tag文件的JSP页面必须向该Tag文件中attribute指令中的name属性指定的对象传递一个引用Tag文件通过使用variable指令可以将Tag文件中的对象返回给调用该Tag文件的JSP页面。variable指令中属性name的值用来指定对象的名字。variable指令中属性scope的值指定对象的有效范围,scope的值可以取AT_BEGIN、NESTEND、AT_END。AT_BEGIN:JSP页面一旦开始使用Tag标记,就可以使用va

13、riable指令中给出的对象NESTEND:JSP页面只可以在 Tag标记的标记体使用variable指令给出的对象AT_END:JSP页面只有在Tag标记结束后,才可以使用variable指令中给出的对象try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(Exception e)建立桥接器:JDBC使用java.lang包中的Class类建立JDBC-ODBC桥接器。Class类通过调用它的静态方法forName加载sun.jdbc.odbc包中的JdbcOdbcDriver类建立JDBC-ODBC桥接器。建立桥接器时可能发生异常,必

14、须捕获这个异常。Connection con;try String uri=jdbc:odbc:mystar;con=DriverManager.getConnection(uri,user,password);catch(SQLException e) result.append(请输入正确的用户名和密码); 编写连接数据库代码不会出现数据库的名称,只能出现数据源的名字。首先先使用java.sql包中的Connection类声明一个对象,然后再使用类 DriverManager调用它的静态方法getConnection创建这个连接对象,建立连接时应捕获异常。应用程序一旦和某个数据源建立了连接

15、,就可以通过SQL语句和该数据源所指定的数据库中的表交互信息,如查询、修改、更新表中的记录。DatabaseMetaData metadata=con.getMetaData();ResultSet rs1=metadata.getColumns(null,null,tableName,null);当和数据库建立连接对象con之后,那么该连接对象调用getMetaData()方法可以返回一个DatabaseMetaData对象。Metadata对象再调用getColumns()方法可以将表的字段信息以行列的形式储存在一个ResultSet对象中。Statement sql;ResultSet

16、rs;sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);rs=sql.executeQuery(SELECT * FROM +tableName);有时候需要在结果集中前后移动,显示结果集指定的一条记录或随机显示若干条记录等。这是,必须要返回一个可滚动的结果集。为了得到一个可滚动的结果集,需先获得一个Statement对象,然后,根据参数的取值情况,sql返回相应类型的结果集。ResultSet.TYPE_SCROLL_SENSITIVE:返回可滚动的结果集,当数据库变化时,当

17、前结果集同步改变ResultSet.CONCUR_READ_ONLY:不能用结果集更新数据库中的表SQL查询语句对数据库查询操作将返回一个ResultSet对象,ResultSet对象是以统一形式的列组织的数据行组成,内存的结果集对象rs的列数是4列,刚好和product(表名)的列数相同,第一列至第四列分别是“number”、“name”、“madeTime”、“price”列。jspContext.setAttribute(queryResult,new String(result);Tag文件为了给JSP页面返回一个对象,就必须将对象的名字以及该对象的引用存储到Tomcat引擎提供的内置

18、对象jspContext中。Tag文件只有将对象的名字及其引用存储到jspContext中,JSP页面才可以使用该对象。jspContext调用setAttribute(对象的名字,对象的引用)方法储存对象的名字以及该对象的引用。随机查询:查询结果:C、更新记录example6_8.jsp 输入要更新的产品的产品号:输入新的名称:输入新的生产日期:输入新的价格:product表更新前的数据记录是: newResult.jsp renew:NewRecord number= name= madeTime= price=/ product表更新后的数据记录是: QueryTag.tag % Str

19、ingBuffer result; result=new StringBuffer(); try Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch(Exception e) Connection con; Statement sql; ResultSet rs; try result.append(); String uri=jdbc:odbc:+dataSource; con=DriverManager.getConnection(uri,user,password); DatabaseMetaData metadata=con.getMe

20、taData(); ResultSet rs1=metadata.getColumns(null,null,tableName,null); int 字段个数=0; result.append(); while(rs1.next() 字段个数+; String clumnName=rs1.getString(4); result.append(+clumnName+); result.append(); sql=con.createStatement(); rs=sql.executeQuery(SELECT * FROM +tableName); while(rs.next() result

21、.append(); for(int k=1;k=字段个数;k+) result.append(+rs.getString(k)+); result.append(); result.append(); con.close(); catch(SQLException e) result.append(请输入正确的用户名和密码); jspContext.setAttribute(queryResult,new String(result);/返回queryResult对象 jspContext.setAttribute(biao,tableName); /返回biao对象%NewRecord.t

22、ag代码分析:newResult.jsp一个Tag文件也可以使用几个taglib指令标记引入若干个标记库,其中renew和inquire均为前缀。QueryTag.tagDatabaseMetaData metadata=con.getMetaData();ResultSet rs1=metadata.getColumns(null,null,tableName,null);当和数据库建立连接对象con之后,那么该连接对象调用getMetaData()方法可以返回一个DatabaseMetaData对象。Metadata对象再调用getColumns()方法可以将表的字段信息以行列的形式存储在

23、一个ResultSet对象中。如果product(就是表名)有n个字段,tableMessage(rsl)就刚好有n行、每行4列。每行分别含有和相应字段有关的信息,信息的次序为:“数据库名”、“数据库扩展名”、“表名”、“字段名”。NewRecord.tagcondition1=UPDATE product SET name= +name+ WHEREnumber=+number+,sql.executeUpdate(condition1);可以使用SQL语句更新记录中字段的值。Statement对象调用方法:public int executeUpdate(String sqlStatement);通过参数sqlStatement指定的方式实现对数据库表中记录的字段值的更新。注意:可以使用一个Statement对象进行更新和查询操作,但需要注意的是,当查询语句返回结果集后,如果没有立即输出结果集的记录,而接着执行了更新语句,那么结果集就不能输出记录了。要想输出记录就必须重新返回结果集。更新记录:更新结果:D、添加记录example6_9.jsp添加新记录: 输入产品号:输入名称:输入生产日期:输入价格:product表添加新记录前的记录是: /HTM

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com