JSP应用与开发技术课后习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章
1.什么是静态网页?什么是动态网页?两者的区别是什么?试举例说明。
答:在网站设计中,纯粹HTML格式的网页通常被称为“静态网页”,早期的网站一般都是由静态网页制作的。
静态网页是相对于动态网页而言,是指没有后台数据库、不含程序和不可交互的网页。
你编的是什么它显示的就是什么、不会有任何改变。
静态网页相对更新起来比较麻烦,适用于一般更新较少的展示型网站。
静态网页的网址形式通常为:,也就是以.htm、.html、.shtml、.xml等为后后缀的。
在HTML格式的网页上,也可以出现各种动态的效果,如.GIF格式的动画、FLASH、滚动字母等,这些“动态效果”只是视觉上的,与下面将要介绍的动态网页是不同的概念。
我们将静态网页的特点简要归纳如下:
(1)静态网页每个网页都有一个固定的URL,且网页URL以.htm、.html、.shtml等常见形式为后缀,而不含有“?”;
(2)网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是保存在网站服务器上的,也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件;
(3)静态网页的内容相对稳定,因此容易被搜索引擎检索;
(4)静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难;
(5)静态网页的交互性交叉,在功能方面有较大的限制
动态网页是与静态网页相对应的,也就是说,网页URL的后缀不是.htm、.html、.shtml、.xml等静态网页的常见形式,而是以.asp、.jsp、.php、.perl、.cgi 等形式为后缀,并且在动态网页网址中有一个标志性的符号——“?”,如有这样一个动态网页的地址为:这就是一个典型的动态网页URL形式。
这里说的动态网页,与网页上的各种动画、滚动字幕等视觉上的“动态效果”没有直接关系,动态网页也可以是纯文字内容的,也可以是包含各种动画的内容,这些只是网页具体内容的表现形式,无论网页是否具有动态效果,采用动态网站技术生成的网页都称为动态网页。
我们将动态网页的一般特点简要归纳如下:
(1)动态网页以数据库技术为基础,可以大大降低网站维护的工作量;
(2)采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、用户管理、订单管理等等;
(3)动态网页实际上并不是独立存在于服务器上的网页文件,只有当用户请求时服务器才返回一个完整的网页;
(4)动态网页中的“?”对搜索引擎检索存在一定的问题,搜索引擎一般不可能从一个网站的数据库中访问全部网页,或者出于技术方面的考虑,搜索蜘蛛不去抓取网址中“?”后面的内容,因此采用动态网页的网站在进行搜索引擎推广时需要做一定的技术处理才能适应搜索引擎的要求。
静态网页与动态的区别
程序是否在服务器端运行,是重要标志。
在服务器端运行的程序、网页、组件,属于动态网页,它们会随不同客户、不同时间,返回不同的网页,例如ASP、PHP、JSP、、CGI等。
运行于客户端的程序、网页、插件、组件,属于静态网页,例如html页、Flash、JavaScript、
VBScript等等,它们是永远不变的。
2. 什么是B/S模式?什么是C/S模式?试举例说明。
答:即浏览器服务器结构。
它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。
在这种结构下,用户工作界面通过浏览器来实现,极少部分事务逻辑在前端(Browser)实现,主要事务逻辑在服务器端(Server)实现,形成所谓三层结构。
这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。
客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。
浏览器通过Web Server 同数据库进行数据交互。
这种模式,我们通常将其成为瘦客户端模式。
典型的系统:网上银行、网上书店、Blog等等
客户机/服务器(Client/Server,C/S)模式
即客户机和服务器结构。
这种体系结构模式是以数据库服务器为中心、以客户机为网络基础、在信息系统软件支持下的两层结构模型。
这种体系结构中,用户操作模块布置在客户机上,数据存储在服务器上的数据库中。
客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供网络必须的资源。
目前大多数信息系统是采用Client/Server结构。
服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。
客户端需要安装专用的客户端软件。
这种模式我们也通常成为胖客户端模式。
典型的系统:QQ、MSN
3. 什么是JSP?与ASP、PHP、相比,JSP有哪些优点??
答:JSP(Java Server Pages)是由Sun Microsystems公司倡导的、许多公司参与一起建立的一种动态网页技术标准。
JSP技术是用Java语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。
JSP不像CGI,ISAPI和NSAPI那样难于编写和维护,不像PHP那样只能适应中小流量的网站,也不像ASP那样受到跨平台的限制(只能运行于Microsoft公司开发的IIS和PWS 上)。
JSP体现了当今最先进的网站开发思想,和其他Web开发工具相比,JSP有着它自己强大的优势。
程序可以跨台平执行。
JSP可以让开发人员在任意环境中进行开发,在任意环境中进行系统部署,在任意环境中扩展应用程序。
多样化和功能强大的开发工具支持。
Java有许多非常优秀的开发工具,而且有许多可以免费得到,并且其中的许多已经可以顺利地运行于多种平台之下。
强大的可伸缩性。
从只有一个小的jar文件就可以运行servlet/jsp到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,一台服务器到无数台服务器,Java 显示了巨大的生命力。
4. JSP、Java和JavaScript有什么区别与联系??
答:JAVASCRIPT从其名称含义是JAVA脚本,是在浏览器中运行的脚本语言,由于其大部分语法规范取自于JAVA语法规范,所以取名为JAVASCRIPT。
JAVASCRIPT是一门基于对象的弱类型脚本编程语言,主要用来制作网页前台的技术。
并且是现在比较热门的AJAX技术的核心。
JSP是JAVA SERVER PAGE的首字母缩写,顾名思义,是JAVA的服务端页面,其动态语
法部分完全是JAVA规范。
JSP是基于Java的技术,用于创建可支持跨平台及Web服务器的动态网页。
从构成情况上来看,JSP页面代码一般由普通的HTML语句和特殊的基于Java语言的嵌入标记组成,所以它具有了Web和Java功能的双重特性。
JSP是和ASP,PHP一样的服务器端语言,主要用来制作网站后台的技术。
JAVA是和C/C++一个等级的强类型编程语言,是纯面向对象的.比起JSP和JAVASCRIPT 要复杂的多。
一般学好JAVA就能很容易转向其他两门语言。
总结:JSP是JAVA技术的其中之一,所以学好了JAVA过渡到JSP从编程角度来讲比较容易,学好JSP以后要想学好JAVA,就还要学习更多的JAVA方面的东西,比如JAVABEAN,企业级应用等等。
JAVASCRIPT严格来讲,除了语法参照了JAVA语法规范外,和JAVA毫无关系,所以两者之间只是语法规范类似,相互之间的过渡就只有语法能够参照,其他的都得分别去了解,JAVASCRIPT是过程式语言,JAVA则是面向对象的。
第2章
1. 什么是 HTML 语言? HTML文件有什么特征?
答:HTML是超文本标记语言(Hypertext Mark-up Language)的缩写,主要用来创建与系统平台无关的网页文档。
它是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言,它不是编程语言,而是一种描述性的标记(标签)语言。
HTML文件是纯文本文件,是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。
HTML文件能用任意的文本编辑器编辑,如:记事本、写字板、Word等,也可以使用所见即所得的编辑器来编辑HTML文件,如Dreamweaver等。
2. 什么是JavaScript?
答:JavaScript是由Netscape公司开发的一种网页的脚本编程语言,它支持客户端与服务器端的应用程序以及构件的开发。
JavaScript是一种解释性的语言,它的基本结构形式与其他编程语言相似,需要先编译后执行。
JavaScript是适应动态网页制作的需要而诞生的一种新的编程语言,如今越来越广泛地使用于Internet网页制作上。
在HTML 基础上,使用Javascript可以开发交互式Web网页。
JavaScript的出现使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。
3. 简述HTML和JavaScript在JSP动态网页中所扮演的角色。
答:要使用JSP开发出专业的动态网站,首先必须熟练掌握静态网站的制作技术。
HTML 是在学习JSP之前必须了解的基础知识,很多JSP语法的使用都是建立在HTML文档的基础上。
实际开发中,一般都是使用现成的HTML文档来添加JSP的动态脚本并做适当修改,除了特殊的应用,很少从零开始写一个JSP页面,所以读懂HTML文档并了解HMTL语言中的技巧为更快地上手JSP提供了很大的帮助。
JavaScript是JSP知识体系中一个可选的知识模块。
也就是说不了解JavaScript知识也不会影响JSP的应用开发,但是如果掌握了JavaScript的知识,将可以更加方便地解决网页开发中的某些特定问题,例如经常使用JavaScript判断用户在表单中输入数据的合法性。
第3章
无
第4章
1.如何在HTML网页中嵌入JSP程序代码?怎样来定义JSP中的声明区与程序区?
答:在JSP网页中必须于<%与%>符号间嵌入程序代码。
JSP声明的语法格式为:
<%! declaration; [ declaration; ] ... %> 或<%! 声明; [声明; ] ... %>
脚本代码的语法格式如下:
<% code fragment %> 或<% 代码 %>
2.请说明JSP中有哪3个指令元素,以及这3个指令的主要用途。
答:page指令:可用来设置JSP网页的特性,如编码方式、引用类、缓冲区等。
include指令:可用来将HTML、文本文件或者JSP程序加载当前的JSP网页。
taglib指令:可用来引用一个自定义的标签库。
中include指令与include动作的区别?
答:include指令是指把其它页面的Java代码(源码)加进来,跟本页面的代码合并在一起,相当于把源码从那个页面复制到本页面中来,然后再编译。
并且由于本页面编译时已经包含了别的文件的源码,所以以后其它页面更改时,本页面并不理会,因为已经编译过了。
<jsp:include>动作是指两个页面的代码运行完以后,再把包含的那个页面运行后的HTML 结果页面加到本页面运行后的HTML结果页面中来。
所以是运行时包含,并且还可以传递参数给被包含的页面。
4. JSP网页可以使用的特殊操作元素有哪些?其中<jsp:forward>与<jsp:param>操作元素各有什么功能?
答:可使用的操作元素有<jsp:param>、<jsp:include>、<jsp:forward>、<jsp:plugin>。
<jsp:forward>:可将当前浏览器显示网页的网址,重新导向新的网址。
<jsp:param>:主要用来传递参数给JSP程序,而由程序取得参数值。
第5章
1. JSP中的内建对象包含哪些?试简述这些对象在JSP中的主要功能。
答:request:取得客户端数据与系统的信息。
response:响应客户端信息。
application:记录与处理上线者共享的数据。
session:记录与处理上线者的个别数据。
out:控制数据输出的操作。
config:取得JSP编译后Servlet的信息。
pageContext:存取与处理系统运行时期的各项信息。
page:表示当前的JSP网页。
2. response重定向方法sendRedirect和动作元素<jsp:forward>的区别是什么?
(1)()会在客户端呈现跳转后的URL地址;这种跳转称为客户端跳转。
使用()将重定向的URL发送到客户端,浏览器再根据这个URL重新发起请求。
所以用这个方法时,你在浏览器地址栏上会看到新的请求资源的地址。
并且这个时候的request,response都和第一次的不一样了。
这时是重新产生了新的request,response。
(2)使用<jsp:forward>完全是在服务器上进行,浏览器地址栏中的地址保持不变;这种跳转称为服务器端跳转。
所以使用这个方法时没有产生新的用request,response。
因为request没有变,在同一个请求内,可以用request来转递参数。
(3)()想带参数的话,自己在地址中写成 ?param1=aaa&... 这种形式传递参数。
<jsp:forward>能够使用<jsp:param/>标签向目标文件传送参数和值,目标文件必须是一个动态的文件,能够处理参数。
(4)<jsp:forward>后面的语句不会被执行也不会继续发送到客户端,()后面的语句会继续执行,除非语句前面有return。
(5)<jsp:forward>是在服务器的内部进行转换,只发送给客户端最后转到的页面,速度会比较快;()需要服务器与客户端之间的往返,可以转到任何页面,包括网络有效域名。
但速度比较慢。
3. application与session存储数据变量的方式有何区别?
答:application:记录联机用户共享的数据。
session:记录联机用户的个别数据。
4. 请说明session对象的生命周期在哪些状况下会结束。
答:当以下四种情形之一发生时,session与其中的数据便会消失:
(1)用户关闭当前正在使用的浏览器程序。
(2)关闭网页服务器。
(3)用户未向服务器提出请求超过预设的时间,Tomcat服务器预设为30分钟。
(4)运行程序结束session。
第6章
1. 请简述Cookie的概念与使用方式。
答:Cookie为浏览器提供的功能,是一种可将联机用户的数据存储在客户端计算机上的技术,要运用Cookie必须先建立一个Cookie对象来存储字符串数据,再将此Cookie对象传送到客户端。
2.查看自己计算机上Cookie文件的保存位置。
浏览网页,运行书上的例子,看是否会把信息记录在此位置?文件是如何命名的?文件的内容是什么?
答:在默认情况下,Cookie是随着用户关闭浏览器而自动消失的。
所以书上例子不会保存Cookie。
如果在例2中我们在中使用setMaxAge()方法,设置Cookie对象的存在期限。
这样Cookie对象就会保存在硬盘中的Cookies文件夹中如“C:\Documents and Settings\Administrator\Cookies”如文件“administrator@ch06[1].txt”。
内容是如下代码
“name
d
localhost/ch06/
1024
04
96
*”
的常见用途有哪些?
(1)网站浏览人数管理
由于代理服务器、缓存等的使用,唯一能帮助网站精确统计来访人数的方法就是为每个访问者建立一个唯一的ID。
使用Cookie,网站可以完成以下工作:测定多少人访问过;测定访问者中有多少是新用户(即第一次来访),多少是老用户;测定一个用户多久访问一次网站。
通常情况下,网站设计者是借助后台数据库来实现以上目的的。
当用户第一次访问该网站时,网站在数据库中建立一个新的ID,并把ID通过Cookie传送给用户。
用户再次来访时,网站把该用户ID对应的计数器加1,得到用户的来访次数或判断用户是新用户还是老用户。
(2)按照用户的喜好定制网页外观
有的网站设计者,为用户提供了改变网页内容、布局和颜色的权力,允许用户输入自己的信息,然后通过这些信息对网站的一些参数进行修改,以定制网页的外观。
(3)在电子商务站点中实现诸如“购物篮”等功能
可以使用Cookie记录用户的ID,这样当你往“购物篮”中放了新东西时,网站就能记录下来,并在网站的数据库里对应着你的ID记录当你“买单”时,网站通过ID检索数据库中你的所有选择就能知道你的“购物篮”里有些什么。
与session有何不同?
session与Cookie同样是用来记录上线用户的个别数据的,两者的差异在于session 是存在于服务器端,而Cookie则是存在于客户端。
第7章
1. 试说明什么是JavaBean。
答:JavaBean是一种特殊的Java程序,是用于包装特定功能的程序代码,可以被JSP 网页重复使用,其本身无法独立运行,是JSP网页程序组件化的核心。
2. 请说出如何在JSP网页中载入JavaBean。
A:<jsp:useBean id=id-name scope=scope-name class=class-name />
3. JavaBean对象可声明哪些不同的生命周期?
答:request、session、page及applaction。
4. JavaBean程序除了必须要有一个无传入值的建构式之外,还有哪些特色?
答:除了必须要有一个无传入值的建构式之外,还必须是一个公开的类,并以set及get开头的方法来设置与取得属性。
5. 试说明Get和Post方法之间的差异?
答:Post和Get这两种设置方式主要的差异在于数据的传送方式,前者将所要传送的数据包含在HTTP文件头中,后者则是将数据直接串接在网址栏的后端,两者都可使用GetParameter取得传送的数据内容。
第8章
1. import=".*"
2. 试说明如何利用File类进行文件目录的操作?
答:利用File类进行文件目录的操作首先必需建立一个File对象,将所要操作文件或是目录完整路径当作参数传入,当File对象建立之后,JSP网页便可以利用这个对象调用File类的所有方法,以进行各种文件目录的操作。
3. 简述文件存取操作的操作过程。
答:首先利用File类建立一个参照指定文件的目录的File实体对象,接下来利用FileWriter和FileReader这两个类,进行指定文件的读写,其中的FileWriter的write 方法,负责将数据写入文件,而FileReader的read则用来读取文件中的数据。
第9章
1) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话
create table student
(
学号 int,
姓名 varchar(10),
年龄 int,
性别 varchar(4),
家庭住址 varchar(50),
联系电话 varchar(11)
);
--------------------------------------------------------------------
2) 修改学生表的结构,添加一列信息,学历
alter table student add column 学历 varchar(6);
--------------------------------------------------------------------
3) 修改学生表的结构,删除一列信息,家庭住址
alter table student drop column 家庭住址;说明Statement与ResultSet接口的意义,以及这两个生成的对象在JSP程序处理数据库时,分别扮演着什么样的角色?
答:Statement:Statement接口中主要是提供了一些SQL运行的方法,以及设置运行SQL后所返回ResultSet类型对象的属性。
由此接口所生成的对象在JSP中同样是用来运行各种SQL指令与设置Resultset对象的属性。
ResultSet:ResultSet接口下所定义的方法大都是用来控制ResultSet对象中指针的移动的,以取得其中的数据元素。
2. 试列举说明Statement运行SQL指令的3种方法成员。
答:execute():运行一般SQL指令,例如建立数据库、修改数据表等等。
executeQuery():运行以SELECT语句开头的描述,这个方法同时返回一个包含查看结果的ResultSet对象。
executeUpdate():修改数据表内容,例如新增、删除与修改数据等。
3. 说明如何一次运行多段SQL语句。
答:首先建立一个Statement对象,将多个想要运行的SQL指令以addBatch()方法加到批处理文档中,最后引用executeBacth()方法运行。
第12章 Servlet基础
1.简述Servlet和JSP的关系。
答:
Servlet是服务器端运行的一种Java应用程序。
当浏览器端有请求则将其结果传递给浏览器。
在JSP中使用到的所有对象都将被转换为Servlet或者非Servlet的Java对象,然后被执行,所以执行JSP实际上与执行Servlet是一样的。
2.简述Servlet的生命周期。
答:
Servlet的生命周期可分为下面几个阶段:
(1)装载Servlet。
(2)实例化一个Servlet实例对象。
(3)调用Servlet的init( )方法进行初始化。
(4)服务。
(5)卸载。
3.简述HttpSession接口的功能和使用方法。
答:
.HttpSession接口是Servlet提供会话追踪解决方案。
HttpSession对象存放在服务器端,只是对cookie和url重写技术的封装应用。
使用HttpSession进行会话控制的过程:
(1)获得一个HttpSession实例对象;
(2)访问和设置与会话相关联信息,维护会话的状态;
(3)废弃会话数据。
4.简述开发一个Servlet所需要的步骤。
答:
第一步:编写Servlet实例
第二步:在文件中配置该Servlet
第三步:编写其它文件
5.编写一个html页面和一个Servelt,实现利用Servelt的doPost方法读取html文
件中Form表单内容。
答:
参考写一个利用HttpSession接口的用户登录的Servlet,当用户已经登录时,返回欢迎信息;否则转向登录页面。
答:
第一步:编写Servlet实例所示。
package com;
import .*;
import .*;
import .*;
import *
* 使用HttpSession管理会话的登录Servlet
*/
public class LoginServlet extends HttpServlet {
p rotected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException { doPost(request, response);
}
p rotected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException { ("text/html;charset=GB2312");
PrintWriter out = ();
("<html>");
("<body>");
("<head>");
("<title>使用HttpSession管理会话的登录页面</title>");
("</head>");
("<body>");
rite("Welcome!");
} catch (IOException e) {
throw new JspTagException("IO Error:" + ());
}
return ;
}
p ublic void release() {
}
}
标签库描述文件
……
<tag>
<name> welcome</name>
<tag-class></tag-class>
<body-content>empty</ body-content >
</tag>
配置
……
<taglib>
<taglib-uri>/</ taglib-uri >
<taglib-location>/WEB-INF/</taglib-location>
</taglib>
JSP页面引用标签
<%@page contentType="text/html;charset=gb2312" %>
<%@taglib uri="/WEB-INF/" prefix="my"%>
<html>
<body>
<h2>测试自定义标签</h2>
<my:welcome /><br>
<br>
<br>
<my:welcomeloop count="3"><p style="color:red;">JSP爱好者</p></my:welcomeloop> <% String outValue=",Welcome!"; %>
<my:mytag b="true">
<my:mytag2 value="<%=outValue%>"> JSP爱好者</my:mytag2>
</my:mytag>
</body>
</html>
1.通过继承TagSupper类实现输出welcome的自定义标签。
package ;
/**
*自定义标签WelcomeTagSupport
*/
import class WelcomeTagSupport extends TagSupport {
/**
*开始标签时的操作
*/
public int doStartTag()throws JspException{
try{
().write("Welcome ,");
}catch(IOException e){
throw new JspTagException("IO Error:" + ());
}
return ;rite(",Welcome!");
}catch(IOException e){
throw new JspTagException("IO Error:" + ());
}
return ;
}
}
标签库描述文件
<tag>
<name>Welcome</name>
<tag-class></tag-class>
<body-content>JSP</body-content>
</tag>
2.通过继承BodyTagSupport类实现welcome迭代输出。
package ;
import class WelcomeBodyTagSupport extends BodyTagSupport{
package servlet;
import ;
import ;
public class ControllerServlet extends HttpServlet
{
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException
{
("GBK");
("text/html;charset=GBK");
String action=("action");
if (!isValidated(request) && !("login".equals(action)))
{
gotoPage("/WEB-INF/pages/",request,response);
return;
}
if("login".equals(action))
{
UserBean user=new UserBean();
("name"));
("password"));
UserCheckBean uc=new UserCheckBean(user);
if())
{
HttpSession session = ();
.else语句中继续处理。
/*else if
{
}
else
{
}*/
}
/**
* 判断用户是否已经登录了。
*/
private boolean isValidated(HttpServletRequest request)
{
HttpSession session = ();
if ("user") != null)
return true;
else
return false;
}
/**
* 将请求导向指定的页面。
*/
private void gotoPage(String targetURL, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
RequestDispatcher rd;
rd=(targetURL);
(request, response);
}
}
<?xml version="" encoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>ControllerServlet</servlet-name> <servlet-class>
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ControllerServlet</servlet-name> <url-pattern>/controller</url-pattern>
</servlet-mapping>
</web-app>。