第5章 JSP访问数据库
Java Web编程习题解析(4-7)

第4章习题解析1. 答:使用请求对象(即HttpServletRequest接口)的getSession()方法。
2. 答:如果客户在指定时间内没有访问服务器,则该会话超时。
对超时的会话对象,服务器使其失效。
通过会话对象的setMaxInactiveInterval()方法设置会话最大超时时间。
web.xml文件使用<session-config>元素的子元素<session-timeout>设置最大超时时间,如下所示。
<session-config><session-timeout>20</session-timeout></session-config>这里的最大超时时间是对整个应用程序的所有会话有效,<session-timeout>元素指定的时间单位是分钟。
setMaxInactiveInterval()方法参数单位是秒。
3. 答:有些客户浏览器可能不支持Cookie或用户阻止所有的Cookie,此时不能用Cookie 实现会话。
4. 答:使用响应对象(即HttpServletResponse接口)的encodeURL()方法或encodeRedirectURL()方法。
5. 答:不能。
因为许多用户是通过代理服务器访问Internet的,此时服务器得到的是代理服务器的IP地址而不是实际用户的IP地址,因此这些用户的IP地址不唯一。
6. 答:D7. 答:A, B8. 答:A, D9. 答:C 10. 答:A,C 11. 答:C12. 答:C, D 13. 答:B,C 14. 答:C15. 答:B 16. 答:A 17. 答:C18. 答:A,B,D,F19. 答:具有很大的影响。
该应用程序将不能维护用户的状态。
Servlet容器将为每个客户的每次请求都创建一个新的会话。
修改这个问题的唯一方法是修改Servlet代码加入URL重写功能。
第5章 JSP访问数据库-JSP Web技术及应用教程(第2版)-微课版-王春明-清华大学出版社

rows ; LIMIT 接受一个或两个数字参数。参数必须是整型常量。如果给定两个参
数,第一个参数指定返回记录行的起始偏移量,第二个参数指定返回记录行的 最大数目。注意,初始记录行的偏移量是0,而不是1。
delete from mytable;
清空 mytable 表
update mytable set sex="f" where name=’xiaozhang’;
更新 mytable 表中数据
2021年4月27日4时16分 5
清华大学出版社
第五章 JSP访问数据库
5.1 MySQL数据库
关于MySQL数据库,还要说明如下几点: (1)关于MySQL服务生存期问题
MySQL默认的服务生存期为28800秒(8小时),如果超过8小时未访问 MySQL数据库,则MySQL将自动结束服务。查看有关MySQL服务生存期信 息的MySQL命令为:
MySQL> show variables like '%timeout%'; 查看结果如图。 可通过修改MySQL的初始化配置文件修改MySQL的服务生存期。 修改方法是: 打开MySQL中的my.ini文件。 找到[MySQLd]节点,在其中添加以下两项,重启后生效。
show tables;
查看当前的数据库中存在的表
create table mytable(name varchar(20),sex char(1));
创建数据库表 mytable
describe mytable;
JSP课后习题参考答案

JSP课后习题参考答案●JSP引擎调用Java虚拟机解释执行.class文件,并将运行结果返回给服务器。
●服务器将运行结果以HTML形式作为响应返回给客户端的浏览器。
由于一个JSP页面在第一次被访问时要经过翻译、编译和执行这几个步骤,所以客户端得到响应所需要的时间比较长。
当该页面再次被访问时,它对应的.class文件已经生成,不需要再次翻译和编译,JSP引擎可以直接执行.class文件,因此JSP页面的访问速度会大为提高。
2. 简述JSP两种体系结构。
答:JSP规范中分别称作JSP Model 1 和JSP Model 2,它们的本质区别在于处理批量请求的位置不同。
Model1,在Model1体系中,JSP页面独自响应请求并将处理结果返回客户。
这里仍然存在显示与内容的分离,因为所有的数据存取都是由JavaBean来完成的。
尽管Model1体系十分适合简单应用的需要,它却不能满足复杂的大型Web应用程序需要。
不加选择地随意运用Model 1,会导致JSP页内被嵌入大量的脚本片段或Java代码。
尽管这对于Java程序员来说可能不是什么大问题,但如果JSP页面是由网页设计人员开发并维护的这就确实是个问题了。
从根本上讲,将导致角色定义不清和职责分配不明,给项目管理带来不必要的麻烦。
Model2体系结构,是一种把JSP与Servlet联合使用来实现动态内容服务的方法。
它吸取了两种技术各自的优点,用JSP生成表示层的内容,让Servlet完成深层次的处理任务。
Servlet充当控制者的角色,负责管理对请求的处理,创建JSP页面需要使用的Bean和对象,同时根据用户的动作决定把哪个JSP页面传给请求者。
在JSP页面内没有处理逻辑,它仅负责检索原先由Servlet创建的对象或JavaBean,从Servlet中提取动态内容插入静态模板。
分离了显示和内容,明确了角色的定义以及实现了开发者与网页设计者的分开。
项目越复杂,使用Model 2体系结构的优势就越突出。
JSP课程各章节选择题答案解析

JSP课程各章节选择题答案解析第⼀章1)如果做动态⽹站开发,以下()可以作为服务器端脚本语⾔。
A.HTML B.JSP C.JavaScript D.Java2)在设计Web项⽬的⽬录结构时,⼀般吧JSP 和HTML⽂件放在()下。
A.src⽬录B.⽂档根⽬录或其⼦⽂件下C.META-INT⽬录D.WEB-INF⽬录3)在Web项⽬的⽬录结构中,web.xml⽂件位于()中。
A.src⽬录B.⽂档根⽬录C.META-INF⽬录D.WEB-INF⽬录4)下⾯对于B/S架构与C/S架构的描述错误的是()。
A.B/S架构解决了C/S架构的弊端,因⽽在程序开发中将会逐步取代C/S架构B.B/S机构是基于internet⽹络实现的,使得⽤户访问的范围扩⼤C.C/S架构师基于局域⽹实现的,当程序发⽣改的后,需要对每⼀个客户端进⾏维护D.C/S可以设计出丰富的界⾯,⽽B/S 则相对处于劣势5)以下选项中()是正确的URL,(选两项)A./doc/69c0f9a1f71fb7360b4c2e3f5727a5e9856a270d.html /talk/talk1.htmB.ftp:///doc/69c0f9a1f71fb7360b4c2e3f5727a5e9856a270d.htmlC./doc/69c0f9a1f71fb7360b4c2e3f5727a5e9856a270d.html D./news/welcome.html第⼆章6)在某个JSP页⾯中存在这样⼀⾏代码,<%= “2” + “4” %> 运⾏该JSP后,以下说法正确的是()。
A.这⾏代码没有对应的输出B.这⾏代码对应的输出时6C.这⾏代码对应的输出时24 D.这⾏代码将引发错误7)与page指令<%@ page import= “java.util.*, java.text.* “ %> 等价的是()。
A.<%@ page import= “java.util.* %><%@ page import= “java.text.* “ %>B.<%@ page import= “java.util.*”, import= “java.text.* “ %>C.<%@ page import= “java.util.* “; %><%@ page import= “java.text.* “; %>D.<%@ page import= “java.util.* ; java.text.* “ %>8)下列选项中,()是正确的表达式。
JSP程序设计教程(第5章)

5.2 JavaBean中的属性
1.简单属性(Simple)
简单属性就是在JavaBean中对应了简单的setXxx()和 getXxx()方法的变量,在创建JavaBean时,简单属性最 为常用。
(2)不可视JavaBean 不可视JavaBean:值JavaBean和工具JavaBean。
5.1.2 JavaBean的种类
值JavaBean严格遵循了JavaBean的命名规范, 通常用来封装表单数据,作为信息的容器。 【例5-1】 值JavaBean示例(User类)
工具JavaBean则可以不遵循JavaBean规范,通常用 于封装业务逻辑,数据操作等,例如连接数据库,对数据 库进行增、删、改、查和解决中文乱码等操作。
中文显示乱码。 解决方法:输出获取的表单数据之前,先进行转码操作。
未转码
转码后
5.4.1 应用JavaBean解决中文 乱码
【例5-9】 应用JavaBean解决中文乱码
public static String toChinese(String str){//工具JavaBean if(str==null) str=""; try {//通过String类的构造方法,将指定的字符串转换为“gb2312”编码 str=new String(str.getBytes("ISO-8859-1"),"gb2312"); } catch (UnsupportedEncodingException e) { str=""; e.printStackTrace(); } return str;
chap5_JSP中的文件操作

File类
File类的对象主要用来获取文件本身的一些 信息,例如文件所在的目录、文件的长度、 文件读写权限等,不涉及对文件的读写操作, 主要操作包括获取文件属性和管理目录 File对象的构造方法: File(String filename); File(String directoryPath, String filename ); File(File f, String filename);
11
FlieOutputStream类
构造函数: FileOutputStream(String name); FileOutputStream(File file); 参数name和file指定的文件称为输出流的目的地,通 过向输出流写入数据把信息送往目的地 一般是在try-catch语句的try块部分创建输出流对象, 在catch(捕获)部分检测并处理这个异常 void write(byte b[]); void write(byte b[], int off, int len);
17
RandomAccessFile类
RandomAccessFile流的指向既可以作为源,也可以 作为目的地 当需要对一个文件进行读写操作时,可以创建一个指 向该文件的RandomAccessFile流,这样既可以读也 可以写 RandomAccessFile(String name, String mode) RandomAccessFile(File file, String mode) 参数mode取r或rw,决定对流文件的访问权限 方法seek(long a)用来移动RandomAccessFile流指 向的文件的指针,参数a确定文件指针距离文件开头的 字节位置 方法getFilePointer()可以获取当前文件指针的位置
第五章JDBC数据库编程基础知识

第五章JDBC数据库编程基础知识数据库开发在当前的Web开发与应用中占有着十分重要的地位,信息科技进步的日新月异,实际应用基本都是对数据的保存,加工和处理,所以应用软件的开发离不开数据库知识。
鉴于数据库操作的重要性,本章就此技术进行详细的介绍,以方便大家学习使用。
Java提供的JDBC(Java Database Connectivity)使得我们在数据库编程中如鱼得水,实现操作平台独立以及供应商独立的目标。
本章中,我们会首先搭建起JSP开发数据库环境,然后对SQL数据库操作语言进行简单介绍,再通过具体的示例,让读者整体了解和掌握此项技术。
5.1 JDBCJDBC是Java数据库编程的总称,是JDK重要组成部分,指java.sql包中提供的所有支持数据库编程的API类。
JDBC同时提供对第三方数据库提供商在编写驱动软件时遵循的协议和规范。
JDBC通过drivers与数据库通讯和交流,驱动软件翻译Java程序中对数据库访问的代码,使之成为数据库语言,同时,当数据库将数据或信息传给Java程序,驱动软件又将其翻译为Java语言的代码和数据。
当前主流的数据库提供商有很多,如IBM的DB2,微软的SQL Server,MySQL,甲骨文的Oracle等。
当要添加数据到数据库时,不同数据库中添加操作使用的程序可能都不尽相同,是否就意味着必须针对不同的数据库编写相应的程序呢?实际上,根本无需如此麻烦,Java提供的驱动软件称为JDBC/ODBC(Open Database Connectivity,开放数据库连接协议)桥,通过这个ODBC作为我们存取数据库的接口,可以轻易的存取不同数据库。
ODBC最初是MS公司提供的数据库编程协议模式,现成为JDK中java.sql包的数据库驱动软件。
JDBC包含了“应用程序”(Application)、“驱动管理器”(Driver Manager)、“驱动程序”(Driver)、“数据来源”(Data Sources)4个要素,关系如下图5-1所示。
《数据库系统概论》(王珊)第五版课后习题答案

第二章关系数据库1 .试述关系模型的三个组成部分。
答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
2 .试述关系数据语言的特点和分类。
答:关系数据语言可以分为三类:关系代数语言。
关系演算语言:元组关系演算语言和域关系演算语言。
SQL:具有关系代数和关系演算双重特点的语言。
这些关系数据语言的共同特点是,语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。
3 (略)4 .5 . 述关系模型的完整性规则。
在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?答:实体完整性规则是指若属性 A 是基本关系R 的主属性,则属性 A 不能取空值。
若属性(或属性组)F 是基本关系R 的外码,它与基本关系S 的主码Ks 相对应( 基本关系R 和S 不一定是不同的关系),则对于R 中每个元组在 F 上的值必须为:或者取空值(F 的每个属性值均为空值);或者等于S 中某个元组的主码值。
即属性 F 本身不是主属性,则可以取空值,否则不能取空值。
6.设有一个SPJ 数据库,包括S,P,J,SPJ 四个关系模式:1)求供应工程J1 零件的供应商号码SNO:πSno(σJno=‘J1’(SPJ))2)求供应工程J1 零件P1 的供应商号码SNO:πSno(σJno=‘J1’∧Pno=‘P1‘(SPJ))3)求供应工程J1 零件为红色的供应商号码SNO :πSno(πSno,,Pno(σJno=‘J1‘ (SPJ))∞πPno(σCOLOR= ’红‘(P)))4)求没有使用天津供应商生产的红色零件的工程号JNO :πJno(SPJ)- πJNO(σcity=‘天津’∧Color= ‘红‘(S∞ SPJ∞ P)5)求至少用了供应商S1 所供应的全部零件的工程号JNO:πJno,Pno(SPJ)÷πPno(σSno=‘S1‘(SPJ)7.试述等值连接与自然连接的区别和联系。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.6 使用连接池
2.任务的代码模板 ConnectionPool.java conPool.jsp 3.任务小结或知识扩展 我们再打开一个新的浏览器窗口运行conPool.jsp页 面时,会发现这一次访问的速度要比第一次快得多,而且 也比上几节中访问JSP页面的速度要快。 5.6.4 实践环节 编写一个JSP页面pratice5_6.jsp,在该页面中使用 和任务中同样的bean获得一个数据库连接对象,然后使用 该连接对象查询goodsInfo表中的全部记录。
无限挑战 无限飞翔 JSP网站设计教学做一体化教程 清华大学出版社
5.3 Statement、ResultSet的使用
3.任务小结或知识扩展
ResultSet对象自动维护指向其当前数据行的游标。每调用一次next()方 法,游标向下移动一行。最初它位于结果集的第一行之前,因此第一次调用 next(),将把游标置于第一行上,使它成为当前行。随着每次调用next(),游 标依次向下移动一行,按照从上至下的顺序获取ResultSet行,实现顺序查询。 ResultSet对象包含SQL语句的执行结果。它通过一套get方法对这些行中数据 的访问,即使用getXxx方法获得数据。get方法很多,究竟用哪一个getXxx() 方法,由列的数据类型来决定。使用getXxx方法时,需要注意以下两点: ①无论列是何种数据类型,都可以使用getString(int columnIndex)或 getString(String columnName)方法获得列值的字符串表示。 ②如果使用getString(int columnIndex)方法查看一行记录时,不允许颠倒顺 序,例如不允许: rs.getString(2); rs.getString(1); 无限挑战 无限飞翔 JSP网站设计教学做一体化教程 清华大学出版社
无限挑战 无限飞翔
JSP网站设计教学做一体化教程
清华大学出版社
5.1 使用JDBC-ODBC桥接器连接数据库
5.1.4 实践环节 参考本节任务中的主要内容,创建数据源mySky,该 数据源指定的数据库是goods.accdb。 编写一个JSP页面practice5_1.jsp,该页面中的Java 程序片代码使用JDBC-ODBC桥接器连接到数据源mySky,查 询goodsInfo表中goodsPrice字段值大于100的全部记录。 页面运行效果如图5.9所示。
5.2 使用纯Java数据库驱动程序连接数据库
2.和指定的数据库建立连接 和Oracle数据库建立连接的代码如下:
• • try { Connection con=DriverManager.getConnection("jdbc:oracle:thin:@ 主机:端 口号:数据库名", "用户名","密码"); } catch (SQLException e) { e.printStackTrace(); }
无限挑战 无限飞翔
JSP网站设计教学做一体化教程
清华大学出版社
5.2 使用纯Java数据库驱动程序连接数据库
3.任务小结或知识扩展 从任务中我们可以看出编写程序访问数据库需要有以 下几个步骤: ①导入java.sql包 ②加载驱动程序 ③连接数据库 ④访问数据库 ⑤处理返回的结果集 ⑥关闭数据库连接,释放资源 4.任务代码模板的参考答案
无限挑战 无限飞翔 JSP网站设计教学做一体化教程 清华大学出版社
5.5 访问Excel电子表格
2.任务的代码模板 readExcel.jsp 3.任务小结或知识扩展 一个Excel电子表格可以有多个工作表,我们使用 JDBC-ODBC可以访问该电子表格中的任何一个工作表,就 像访问一个数据库中的任意一张表一样。 4.任务代码模板的参考答案 5.5.4 实践环节 在student.xlsx电子表格中新建一个工作表empTable (如图5.20所示),编写一个JSP页面practice5_5.jsp, 在该页面中显示empTable工作表中的所有记录
无限挑战 无限飞翔
JSP网站设计教学做一体化教程
清华大学出版社
5.3 Statement、ResultSet的使用
5.3.3 任务驱动 1.任务的主要内容 编写两个JSP页面:addGoods.jsp和 showAllGoods.jsp。用户可以在addGoods.jsp页面中输入 信息后,点击“添加”按钮把信息添加到goodsInfo表中。 然后,在showAllGoods.jsp页面中显示所有商品信息。在 该任务中需要编写一个bean(GoodsBean.java),用来实 现添加和查询记录。 2.任务的代码模板 addGoods.jsp showAllGoods.jsp GoodsBean.java
5.1 使用JDBC-ODBC桥接器连接数据库
5.1.1 核心知识 使用JDBC-ODBC桥接器连接数据库的机制是:将连接 数据库的相关信息提供给JDBC-ODBC驱动程序,然后转换 成JDBC接口,供应用程序使用,而和数据库的连接由ODBC 完成。 5.1.2 能力目标 掌握JDBC-ODBC桥接器连接数据库的方法。 5.1.3 任务驱动 1.创建待连接的Microsoft Access数据库 2.建立JDBC-ODBC桥接器 3.创建ODBC数据源
•
5.3 Statement、ResultSet的使用
5.3.4 实践环节 编写两个JSP页面:inputQuery.jsp和showGoods.jsp。 用户可以在inputQuery.jsp页面输入查询条件后,点击 “查询”按钮。然后,在showGoods.jsp页面中显示符合 查询条件的商品信息。在本节任务的bean (GoodsBean.java)中添加一个方法getQueryResultBy() 实现该题的条件查询功能。
无限挑战 无限飞翔
JSP网站设计教学做一体化教程
清华大学出版社
5.4 游动查询
5.4.1 核心知识 为了获得滚动结果集,必须先用下面的方法得到一个 Statement对象: Statement st=con.createStatement(int type, int concurrency); 根据type和concurrency的取值,当执行ResultSet rs=st.executeQuery(String sql)时,会返回不同类型的 结果集。 5.4.2 能力目标 能够灵活使用滚动结果集进行游动查询。
第5章 JSP访问数据库
主要内容 使用JDBC-ODBC桥接器连接数据库 使用纯Java数据库问Excel电子表格 使用连接池 其他典型数据库的连接 预处理语句的使用
无限挑战 无限飞翔
JSP网站设计教学做一体化教程
清华大学出版社
• • • •
无限挑战 无限飞翔
JSP网站设计教学做一体化教程
清华大学出版社
5.2 使用纯Java数据库驱动程序连接数据库
5.2.2 能力目标 掌握纯Java数据库驱动程序连接数据库的方法。 5.2.3 任务驱动 1.任务的主要内容 编写一个JSP页面example5_2.jsp,该页面的Java程 序片代码使用纯Java驱动程序连接Oracle数据库,查询 goodsInfo表中的全部记录。 2.任务的代码模板 example5_2.jsp
无限挑战 无限飞翔 JSP网站设计教学做一体化教程 清华大学出版社
5.4 游动查询
5.4.3 任务驱动 1.任务的主要内容 编写一个JSP页面randomQuery.jsp,查询goodsInfo 表中的全部记录,并将结果逆序输出,最后单独输出第4 条记录。 2.任务的代码模板 3.任务小结或知识扩展 4.任务代码模板的参考答案
无限挑战 无限飞翔 JSP网站设计教学做一体化教程 清华大学出版社
5.1 使用JDBC-ODBC桥接器连接数据库
4.和ODBC数据源指定的数据库建立连接 5.在JSP页面中使用JDBC-ODBC桥接器连接数据库 编写一个JSP页面example5_1.jsp,该页面中的Java 程序片代码使用JDBC-ODBC桥接器连接到数据源myGod,查 询goodsInfo表中的全部记录。页面运行效果如图5.8所示。
无限挑战 无限飞翔 JSP网站设计教学做一体化教程 清华大学出版社
5.6 使用连接池
5.6.1 核心知识 数据库连接池的基本思想是:为数据库连接建立一个 “缓冲池”。预先在“缓冲池”中放入一定数量的连接, 当需要建立数据库连接时,只需从“缓冲池”中取出一个, 使用完毕之后再放回去。可以通过设定连接池最大连接数 来防止系统无限度的与数据库连接。更为重要的是,通过 连接池的管理机制监视数据库连接的数量及使用情况,为 系统开发、测试和性能调整提供依据。
无限挑战 无限飞翔
JSP网站设计教学做一体化教程
清华大学出版社
5.2 使用纯Java数据库驱动程序连接数据库
5.2.1 核心知识 使用纯Java数据库驱动程序连接数据库,需要经过两个步骤: 注册纯Java数据库驱动程序 和指定的数据库建立连接
无限挑战 无限飞翔
JSP网站设计教学做一体化教程
清华大学出版社
• try { • Class.forName("oracle.jdbc.driver.OracleDriver"); • } catch (ClassNotFoundException e) { • e.printStackTrace(); • }
无限挑战 无限飞翔
JSP网站设计教学做一体化教程
清华大学出版社
无限挑战 无限飞翔
JSP网站设计教学做一体化教程
清华大学出版社
5.3 Statement、ResultSet的使用
5.3.1 核心知识 和数据库建立连接之后,接下来若要执行SQL语句, 需要有以下几个步骤: 1.创建Statement对象 2.执行SQL语句 3.处理返回的ResultSet对象 5.3.2 能力目标 能够灵活使用Statement与ResultSet对象对数据库进 行增删改查。