文档库 最新最全的文档下载
当前位置:文档库 › JSP期末考试复习资料

JSP期末考试复习资料

JSP期末考试复习资料
JSP期末考试复习资料

1-2 JSP中可重复使用的组件有哪些?

JavaBean/JSP标准标签/自定义标签

1-3 什么是JSP的预编译特征?

答:JSP页面在被服务器执行前,都是已经被编译好的,并且通常只进行一次编译,即在JSP 页面被第一次请求时进行编译,在后续的请求中如果JSP页面没有被修改过,服务器只需要直接调用这些已经被编译好的代码,这大大提高了访问速度。

1-8 开发JSP程序可采用哪几种开发模式?分别介绍他们的优缺点。

答:第一种:单纯的JSP页面编程

优点是容易实现;缺点是程序结构混乱,维护不便。

第二种:JSP+JavaBean编程

优点是结构比较清晰;缺点是将流程控制放到JSP中,JSP不能单纯作为显示功能

第三种:JSP+JavaBean+Servlet编程

优点是层次关系明显、组件分工明确;缺点是对开发人员能力要求较高,不适合JSP初学者。

2-2 什么是成员变量和局部变量?他们的区别是什么

答:成员变量是在类体中变量定义部分所声明的变量;

局部变量是在方法体重声明的变量和方法的参数

两者的区别在于有效范围不同,成员变量在整个

类内都有效,而局部变量只在定义他的成员方法

内才有效。

2-3 如何创建、使用并销毁对象?

答:创建对象的方法:

类名对象名;

对象名 = new 构造方法名([参数列表]);

或者:

类名对象名 = new 构造方法名([参数列表]);

使用对象的方法:可以通过对象来引用其成员变量,并改变成员变量的值,而且还可以通过对象来调用其成员方法。通过使用运算符“.”实现对成员变量的访问和成员方法的调用。

销毁对象的操作由Java提供的垃圾回收机制自动完成。不需要手工完成销毁对象操作。或者调用对象的finalize()方法。

3-1 JSP页面由哪些元素组成?

<%@ page language="java" contentType="text/html; charset=gb2312”%>

<%@ page import="java.util.Date" %>

JSP页面的基本构成

<% String today=new Date().toLocaleString(); %>

今天是:<%=today%>

3-2 JSP 中主要包含哪几种指令标识?它们的作用及语法格式是什么?

page 定义一个JSP 页面的全局属性。

include 在JSP 中包含引用其他的资源。

taglib 定以在JSP 页面中使用到客户化标签库及引用标识。

tag 用于声明客户化tag 的属性。

variable 用于声明一个EL 的tag 标记变量。

attribute 用于在tag file 中声明一个tag 的属性。

page 指令定义在整个JSP 页面范围内有效的属性。

<%@ page contentType="text/html;charset=gbk" %>

include 指令用于在当前的JSP 页面中使用该指令的位置嵌入其他的文件,如果被包含的文件中有可执行的代码,则显示代码执行后的结果。

<%@ include file="文件的绝对路径或相对路径" %>

通过使用taglib 指令,开发者就可以在页面中使用标准标签或自定义标签来完成特殊的功能。

<%@ taglib {uri="URI" | tagdir="/WEB-INF/tags[/subdir]+"} prefix="tagPrefix" %> <%@taglib prefix="mytagf" tagdir="/WEB-INF/tags"%>

3-6 有几种方法可实现在页面中来包含文件?如何实现?它们有什么区别?

include 动作标识与include 指令之间的差异。

差异1:属性不同

include 指令——通过file 属性指定被包含的页面,将file 值看作一个实际存在的文件的路径,不支持任何表达式。

include 动作——通过page 属性指定被包含的页面,该属性支持JSP 表达式。 JSP 语法总结

JSP 构成 注释 指令 动作 脚本 HTML 注释:

隐藏注释: <%-- --%>

page : <%@page import=......%> include : <%@include file=......%> include :

forward :

声明:<%! ......%>

表达式:<%= ......%>

脚本程序:<% ......%>

taglib : <%@taglib uri=......%> Html

带有JSP 表达式的注释:

脚本程序中的注释: //、/* */、/** */

useBean :

setProperty :

getProperty :

plugin :

fallback :

差异2.处理方式不同

include指令——被包含的文件的内容原封不动地插入到主页面中,JSP编译器对这个合成的文件进行翻译。在一个JSP页面包含另外一个JSP页面,最终编译后的class文件只有一个。

include动作——主页面将请求转发到被包含的页面,并将执行结果输出到浏览器中,然后返回主页面继续执行后面的代码。JSP编译器会分别对这两个文件进行编译。

差异3.包含方式不同

include指令——静态包含。被包含的文件发生改变,整个主页面文件就会重新被编译,最终服务器执行的是将两个文件合成后由JSP编译器编译成的一个class文件。include动作——动态包含。服务器执行的是两个文件,被包含文件的改动后不会对主页面文件重新编译,而只需重新编译被包含的文件。当include动作标识被执行时,使用该识包含的目标文件才会被编译,否则被包含的文件不会被编译。

差异4.对被包含文件的约定不同

使用include指令包含文件时,对被包含文件有约定。主文件和包含文件的page 指令不应重复。

●4-1 JSP提供的内置对象有哪些?作用分别是什么?

内置对象名称所属类型有效范围说明

request javax.servlet.http.HttpServletRequest request 请求response javax.servlet.http.HttpServletResponse page 响应session javax.servlet.http.HttpSession session 会话

application javax.servlet.ServletContext application 应用程

out javax.servlet.jsp.JspWriter page 输出

pageContext javax.servlet.jsp.PageContext page 页面上下文

config javax.servlet.ServletConfig page 配置

page javax.servlet.jsp.HttpJspPage page 页面exception https://www.wendangku.net/doc/312162653.html,ng.Throwable page 异常

●4-5 如果用户长时间不操作session对象,用户的session对象会消失吗?

为了弥补HTTP协议的“无状态”的这一缺点,JSP提供了一个session对象,这样服务器和客户端之间的连接就会一直保持下去,在一定时间内(系统默认在30分钟内),如果客户端不向服务器发出应答请求,session对象就会自动消失。在编写程序时,可以修改这个时间限定值,使session对象在特定时间内保存信息。

●4-6 用户关闭浏览器后,用户的session会立即消失吗?

从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。

可以利用此特性来保存每个用户信息,当一个客户登录一个网站时,系统将为用户生成一个独一无二的会话对象,用以记录该用户的个人信息,一旦该用户退出网站,该会话对象将会被注销。

●4-8 session对象与application对象的区别有哪些?

session对象和用户会话相关,不同用户的session是完全不同的对象;

application对象都是相同的一个对象,即共享这个内置的application对象。

一、填空(共10分,每空1分)

2. 在Tomcat服务器中部署Web应用程序时,可以直接将Web程序归档文件W AR存放到tomcat服务的_ webapps _目录中。

3. 在Servlet中用来接收客户表单数据的两个常用方法为__get __、__post____。

4. 在一个应用程序中不同的页面共享数据时,最好的JSP内置对象为__application /session __。

5. 假设有一个JavaScript函数为show() ,如果要求在页面加载时就执行,最好使用标记的__event/onload _什么事件。

6. 在删除数据时要求用户确认是否真的删除数据,如果使用JavaScript实现,应用使用___onclick/confirm __对话框。

7. JDBC中___DriverManager/Connection _接口用于连接数据库。

8. Resulset接口的__next()/request _方法可以使结果集指针指向下行数据。

9. 如果要获取请求客户端的IP地址,应使用______象。

二、单选选择(60分,每题1.5分)

1.在JSP中如果要导入java.io.* 包,应该使用__A__指令。

A. page

B. taglib

C. include

D. forward

2.如果当前JSP页面出现异常时需要转到一个异常页,需要设置page 指令的__D__属性A. Exception B. isErrorPage C. error D. errorPage

3.在MVC模式中,核心内容为___C___。

A. view

B. control

C. model

D. 不确证

4.在javaScrpt中window对象的___C___方法用于打开一个新窗口。

A. openWindow()

B. window()

C. open()

D. close()

5.在javaScrpt中window对象的___D____方法用于关闭当前窗口。

A. open()

B. confirm()

C. alert()

D. close()

6.java.io.File对象的_____B__方法可以新建一个文件。

A. delete()

B. createFile()

C. mkdir()

D. createNewFile()

7.在JSP应用程序中要求删除所有photo目录中的的文件,但是保留文件夹,下列代码中空缺位置最适合的选项为______A_____________。

String path=request.getRealPath("photo");

File fp1=new File(path);

File[] files=fp1.listFiles();

for(int i=0;i

{

if(__________________________)

{

files[i].delete();

}

}

A. files[i].isFile()

B. files[i].isDirectory()

C. !files[i].isFile()

D. ! files[i].isDirectory() 8.sesson对象的_______D___方法用于判断是否为开始新会话。

A. begin()

B. isNewSessionID()

C. invalidate()

D. isNew()

9.创建JSP应用程序时,配置文件web.xml应该在程序下的__C__目录中。

A. admin

B. servlet

C. WEB-INF

D. WebRoot

10.下列不属于URL的组件部分为____________D___________。

A. 协议

B. IP地址或域名

C.目录或文件

D. 服务器名称

11.下列表单

,如果单击提交按钮时,表单____________C____________。

A. 没有指定action属性,所以不做提交

B. 使用post方式提交

C. 提交到当前页

D. 不确定

12.组件表示_____A_______。

A. 图形按钮

B. 图形显示标记

C. 上传图片

D. 下载图片

13.JSP中的隐式注释为_______C____________。

A. // 注释内容

B.

C. <%--注释内容--%>

D. /* 注释内容*/

14.下列__A______指令定义在JSP编译时包含所需要的资源。

A. include

B. page

C. taglib

D. forward

15.如果编写一个计数器程序,用来记载当前网站的访问量,最好采用JSP中的__B_对象。

A. page

B. session

C. request

D. application

16.下列可以正确获取当前Web程序物理路径的方法为_____A__________。

A.request.getRealPath(“/”)

B.request.getFile(“/”)

C. esponse.getRealPath(“/”)

D. r esponse.getFile(“/”)

17.Http的中文含义为_____C_______________________。

A. 统一资源定位器

B. 简单邮件传输协议

C. 超文本传输协议

D. 网络套接字

18.下列____C_____接口专用于访问数据库的中存储过程。

A.CallableStatement

B. PreparedStatement

C. ProcedureStatement

D. Statement 19.如果想在tomcat服务器启动时将jar包加载到内存,且该jar包可以被tomcat服务器上所有的应用使用,应该将该jar包复制到tomcat的________D_____________目录。

A. common

B. server

C. common\lib

D. server\lib 20.Tomcat服务器的默认端口为________C______________。

A. 8888

B. 8001

C. 8080

D. 80

21.在html标记中,________C____________标记用于设置当前页面的标题。

A. head

B. name

C. title

D. html

22.如果在网页上显示一幅图片,下面哪句代码是正确的_____A________________。A. B.logo.gif

C. D.

23.下面____________A________项链接是在新的浏览视窗中打开网页。

A. 链接到网易

B. 链接到网易

C. 链接到网易

D. 链接到网易 (此项为默认值)

24.设在表单中有一组复选钮标记,如下列代码:

请选择喜欢的城市:

长春

北京

大连

上海

如果在register.jsp是取city的值,最适合的方法为___________C__________。

A. String city= request.getParameter(“city”);

B. String []cities=request.getParameter(“city”);

C. String []cities=request.getParameterV alues(“city”);

D. String city=request.getAttribute(“city”);

25.在html中绘制表格时,___________C________标记是表格中的换行标记。

A.

B.

D.

C.

26.在HTML文件中导入一个样式表的正确语法为_______A______________。

A.

B.

C.

D.

27.使用JavaScript语言中Document的_______A________方法可以在页面上输出字符。

A. document.write()

B. document.print()

C. document.out()

D. document.flush()

28.下列____A/B____实现单击超级链接是弹出确认对话框,询问用户是否真的删除。A. 删除 A. 删除

A. 删除 A. 删除 29.在HTML中引用外部JavaScript文件中的正确代码为______A________。

A.

B.

C.

D.

30.下列XML格式正确的为_______D______________。

A. <学生学号=“101”姓名=张三/>

B. <学生学号=“101”姓名=”张三”>

C. <学生学号=“101”姓名=”张三”/>

D. 学生 31.在JSP中的Java脚本中输出数据时可以使用____C____对象的print()方法。

A. page

B. session

C. out

D. application

32.重向可以使用__________D___________方法。

A. response.sendRedirect(“login.jsp”):

B. request.sendRedirect(“login.jsp”);

C.

D.

33.释放session对象时,使用session对象的___________B__________方法。

A. clear()

B. invalidate()

C. remove()

34.session对象的________D_________方法用于设置会话的超时时间。

A. session.setMaxInactiveInterval(30);

B.session.setMaxTime(30) ;

C.session.getMaxInactiveInterval() ;

D.session.setAttribute(“time”,30) ;

35.声明对象的默认有效范围为_________A/B___________。

A. page

B. session

C. application

D. request

36.请选出微软公司提供的连接SQL Server 2000的JDBC驱动程序。C

A. oracle.jdbc.driver.OracleDriver

B. sun.jdbc.odbc.JdbcOdbcDriver

C. com.microsoft.jdbc.sqlserver.SQLServerDriver

D. com.mysql.jdbc.Driver

37.Servlet的初始化参数只能在Servlet的______B_________方法中获取。

A. doPost()

B. doGet()

C. init()

D. destroy()

38.JSP应用程序配置文件的根元素为________B____________。

A.

B.

C.

D.

39.下列哪个不是HTML的常用标记________________D________________。

A.

B.

C.

D.

40.在JSP中通过虚拟目录获取真实的物理目录的方法为__A________。

A.request.getRealPath()

B.request.getPath()

C. response.getRealPath()

D. response.getPath()

69、forward 和redirect的区别

答:forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。

redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取70、jsp有哪些内置对象?作用分别是什么?

答:JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):

request 用户端请求,此请求会包含来自GET/POST请求的参数

response 网页传回用户端的回应

pageContext 网页的属性是在这里管理

session 与请求有关的会话期

application servlet 正在执行的内容

out 用来传送回应的输出

config servlet的构架部件

page JSP网页本身

exception 针对错误网页,未捕捉的例外

71、jsp有哪些动作?作用分别是什么?

答:JSP共有以下6种基本动作

jsp:include:在页面被请求的时候引入一个文件。

jsp:useBean:寻找或者实例化一个JavaBean。

jsp:setProperty:设置JavaBean的属性。

jsp:getProperty:输出某个JavaBean的属性。

jsp:forward:把请求转到一个新的页面。

jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记

72、JSP中动态INCLUDE与静态INCLUDE的区别?

答:动态INCLUDE用jsp:include动作实现

它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数

静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面 <%@ include file="included.htm" %>

73、两种跳转方式分别是什么?有什么区别?

答:有两种,分别为:

前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于go to 语句。

74、JSP的内置对象及方法。

答:request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。

response表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)

out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。

pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息

applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet 引擎和servlet环境的信息

config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。

page表示从该页面产生的一个servlet实例

Servlet方面

75、说一说Servlet的生命周期?

答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。 Servlet 被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

76、JAVA SERVLET API中forward() 与redirect()的区别?

答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

77、Servlet的基本架构

答:

public class ServletName extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {

}

public void doGet(HttpServletRequest request, HttpServletResponse response) t hrows

ServletException, IOException {

}

}

78、什么情况下调用doGet()和doPost()?

答:Jsp页面中的form标签里的method属性为get时调用doGet(),为post时调用doPost()。

79、servlet的生命周期

答:web容器加载servlet,生命周期开始。通过调用servlet的init()方法进行servlet 的初始化。通过调用service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web容器调用servlet的destroy()方法。

80、如何现实servlet的单线程模式

答:<%@ page isThreadSafe="false"%>

81、页面间对象传递的方法

答:request,session,application,cookie等

82、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?

答:JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

83、四种会话跟踪技术

答:会话作用域ServletsJSP 页面描述

page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的 Java servlet 类(可以带有任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面

request是是代表与 Web 客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个 Web 组件(由于 forward 指令和 include 动作的关系)

session是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也经常会跨越多个客户机请求

application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域

84、Request对象的主要方法

答:

setAttribute(String name,Object):设置名字为name的request的参数值

getAttribute(String name):返回由name指定的属性值

getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例getCookies():返回客户端的所有Cookie对象,结果是一个Cookie数组getCharacterEncoding():返回请求中的字符编码方式

getContentLength():返回请求的Body的长度

getHeader(String name):获得HTTP协议定义的文件头信息

getHeaders(String name):返回指定名字的request Header的所有值,结果是一个枚举的实例

getHeaderNames():返回所以request Header的名字,结果是一个枚举的实例getInputStream():返回请求的输入流,用于获得请求中的数据

getMethod():获得客户端向服务器端传送数据的方法

getParameter(String name):获得客户端传送给服务器端的有name指定的参数值getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的实例

getParameterValues(String name):获得有name指定的参数的所有值

getProtocol():获取客户端向服务器端传送数据所依据的协议名称

getQueryString():获得查询字符串

getRequestURI():获取发出请求字符串的客户端地址

getRemoteAddr():获取客户端的IP地址

getRemoteHost():获取客户端的名字

getSession([Boolean create]):返回和请求相关Session

getServerName():获取服务器的名字

getServletPath():获取客户端所请求的脚本文件的路径

getServerPort():获取服务器的端口号

removeAttribute(String name):删除请求中的一个属性

85、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?

答:

Public String translate (String str) {

String tempStr = "";

try {

tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");

tempStr = tempStr.trim();

}

catch (Exception e) {

System.err.println(e.getMessage());

}

return tempStr;

}

86、Servlet执行时一般实现哪几个方法?

答:

public void init(ServletConfig config)

public ServletConfig getServletConfig()

public String getServletInfo()

public void service(ServletRequest request,ServletResponse response)

public void destroy()

Jdbc、Jdo方面

87、Class.forName的作用?为什么要用?

答:调用该访问返回一个以字符串指定类名的类的对象。

88、Jdo是什么?

答:JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。

89、说出数据连接池的工作机制是什么?

答:J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。90、Jdo是什么?

答:JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO 更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。

第一章

1.什么是JSP?由哪间公司推出?

答、JSP全称Java server pages,由sun Microsystems公司于1999年6月推出。

2.什么是CGI?

答、CGI技术全称Conmon Gatawey Interface,公共网关接口。

3.CGI优缺点?

答、编写CGI程序可以使用不同的程序语言,如Perl、Delphi、C/C++,发展成熟功能强大;具有编程困难、效率低下、修改复杂等缺陷。

4.JSP特点?

答、JSP技术使用java编程语言编写类XML的标记和脚本代码,来封装产生动态网页的处理逻辑;将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计;

具备了Java技术的简单易用,完全的面向对象,具有与平台无关性且安全可靠,主要面向因特网的所有特点。

5.为什么使用JSP?

答、①将内容的生成和显示进行分离;②生成可重用的组件;③采用标记简化页面开发;

④Servlet功能;⑤健壮的存储管理和安全性;⑥一次编写,随处运行。

第二章

1. JSP编译和执行过程

答、执行过程可以分为以下步骤:①浏览器客户端向JSP引擎发出对JSP页面的请求;

②JSP引擎将对应JSP页面转换成Java Servlet源代码;③JSP引擎编译生成源代码,生

成.class文件;④JSP引擎加载运行对应的.class文件,生成响应的结果页面;⑤JSP引擎吧响应的结果发送到浏览器端。

2. JSP页面组成部分(4个)以及其作用

答、①HTML代码——基本的框架代码。②脚本元素——用来嵌入java代码,这些java 代码将成为转换得到servlet的一部分;③指令——JSP指令用来从整体上控制servlet的结构;④动作——用来引入现有的组件或控制JSP引擎的行为;

3. 一个JSP页面包含的内容

答、JSP指令(指示语句)、JSP声明、Java程序片段(Scriptlet)、变量数据的Java表达式、隐含对象。

4. JSP指令语法形式

答、JSP指令(在<%@和%>之间)用来设置整个JSP页面相关属性,如网页编码方式(PageEncoding)和脚本语言(Language)。

语法形式:<%@ 指令名属性=“值”%>

5. 常用的3种指令page、include、和taglib以及各自功能

答、①page——指定所使用的脚本语言,JSP代表的Servlet实现的接口,Servlet扩展的类以及导入的软件包。如:<@ page contentType=“text/html;charset=gb2312”>

②Include——JSP可以通过include指令来包含其他文件(JSP文件(其中java程序也被执行)、HTML文件或文本文件)。

<%@ include file=”fileURL”%>

③taglib——用于引入JSP页面中需要使用的标记库的定义,以便在页面中使用标记库中定义的标记。

<%@ taglib prefix=”tagPrefix “(uri=”tagLibraryURI”|tagdir=”tagDir”)%>

6. JSP声明以及形式

答、JSP页面中可以声明变量和方法,所声明的变量和方法仅在当前页面内有效(声明不会产生任何输出内容)。

<%! 声明1;声明2;…%>

7. 什么是隐含对象

答、为了简化页面开发复杂性,JSP提供了一些可在脚本中使用的内置对象(内置对象不需要在使用它们之前进行声明)。

8. 常用的隐含对象有哪些?

答、request、response、pageContext、application、out、config、page、session和exceprtion。

9. 一个JSP页面的执行过程可以分为几个步骤?

答、执行过程可以分为以下步骤:①浏览器客户端向JSP引擎发出对JSP页面的请求;

②JSP引擎将对应JSP页面转换成Java Servlet源代码;③JSP引擎编译生成源代码,生

成.class文件;④JSP引擎加载运行对应的.class文件,生成响应的结果页面;⑤JSP引擎吧响应的结果发送到浏览器端。

10. JSP引擎管理JSP页面生命周期的两个阶段

答、转换阶段——当有一个对JSP页面的请求到来时,JSP引擎检验JSP页面的预防是否正确,将JSP页面转换为Servlet源文件,然后调用Javac工具类编译Servlet源文件生成字节码文件。

执行阶段——Servlet引擎加载转换后的Servlet类,实例化一个对象处理客户端的请求,请求处理完成后,响应对象被JSP引擎吸收,引擎将HTML格式的响应信息发送到客户端。

11. 在JSP页面中,注释的两个主要作用

答、一是为代码作注释,二是将某段代码去掉(暂时隐掉)。

12. 注释类型、区别

答、①HTML注释格式为: 当通过浏览器查看页面源文件内容时,可以看到注释的内容。

②JSP页面中的普通注释是指以下两种样式的注释方法:<% // 注释内容%>和<% /*

注释内容*/ %> 以上两个注释都将由浏览器忽略,于html注释相似。

③JSP代码注释格式为:<%--JSP代码注释--%> 注释的内容在浏览器是看不到的,

不会发到客户端,而且连JSP引擎自动生成的Java源代码也不会包含,编译器对其置之不理。

13. 作用域的分类和隐性对象各自的作用域。

答、作用域的分类:页作用域、请求作用域、会话作用域、应用程序作用域。

隐性对象的作用域:①请求对象:HttpServletRequest对象,其作用域是“请求”。②响应对象:HttpServletResponse对象,其作用域是“响应”。③pageContext对象:表示JSP页面的上下文,其作用域也是“响应”。④会话对象:HttpSession类型的对象,用于请求客户端,改对象的作用域“会话”。⑤应用程序对象:ServletContext类型的对象,用于web应用程序,该对象的作用域是“应用程序”。⑥Out对象:改对象的作用域是将输出写入输出流,作用域是“页面”、

14. 编写一个JSP声明的劣质,输出当前时间。

<%@ page language=”java” pageEncdong=:”gb2312” %>

标题

现在时间为:<%=new java.util.Date() %>

第三章JSP语法

1.JSP页面成分以及作用

答、除了普通的HTML代码之外,嵌入JSP页面的其他成分主要有脚本元素、指令和动作。

脚本元素用来嵌入Java代码,这些Java代码将成为转换得到的Servlet的一部分;JSP 指令用来从整体上控制Servlet的结构;动作用来引入现有的组件或控制JSP引擎的行为。

2.JSP脚本元素的格式

答、JSP脚本元素有3种格式:①声明格式<%! Code %>:把声明加入到Servlet类(在任何方法之外);②表达式格式<%=expression%>:计算表达式并输出结果;③Scriptler 格式<%code%>:把代码插入到Servlet的service方法中。

3.JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言,其格式为:

<%@ 指令名属性=“值”%>

4.指令元素以及其作用

答、page指令:page指令作用于整个页面,定义了与JSP页面相关的属性,语法形式为:<%@ page 属性1=“”属性2=“”…%>,一个页面可以包含多个page指令;include 指令:JSP页面可以通过include指令来包含其他文件。Taglib指令:开发人员可以使用标记库来定义自己的JSP标记,然后通过taglib指令使用其定制的标记。

5.JSP动作分类以及主要形式

答、(1)JSP1.2中原有的6种:jsp:include、jspforward 、jsp:param 、jsp:plugin 、jsp:params 和jsp:fallback。

(2)存放JavaBean的有3种:jsp:useBean、jsp:setProperty 和jsp:getProperty。

(3)用于JSP文档的有6种:jsp:root、jsp:declaration 、jsp:scriptlet 、jsp:expression 、jsp:text 和jsp:output。

(4)动态产生X.ML元素的有3种:jsp:attribute 、jsp:body和jsp:element。

(5)用于标记文件的有2种:jsp:invoke和jsp:doBody。

6.参数传递——jsp:param动作

答、jsp:param动作用于“名——值”对的形式为其他标记提供附件信息。它和jsp:include、jsp:forward和jsp:plugin一起使用,

value=”paramV alue”/>,其中Name给出参数的名称,V alue给出参数的值,可为表达式。

7.页面包含——jsp:include动作

答、jsp:include动作元素用于在当前页面中包含静态和动态的资源。不含参数的用法如下: 含参数时的语法形式如下:

8.jsp:include与include的区别

答、

语法相对路径发生时间包含对象

<%@ include%> 相对于当前文件转换期间静态

相对于当前页面请求处理时间静态和动态

9.页面重定向——jsp:forward动作

答、jsp:forward动作从一个JSP文件向另一个文件传递一个包含用户请求的request对象。

标记以后的代码将不能执行。语法格式如下(不含参数):

”}/> 包含参数:

//传递username参数,其值为Andy。

10.jsp:usebean将一个JavaBean装入一个JSP页面。

第四章JSP内置对象

1.JSP内置对象不需要声明,可以直接在JSP中使用。

2.JSP内置对象以及作用

答、request用来请求信息;reaponse用来响应信息;out用来输出HTML,pageContext表示当前JSP页面的上下文信息,session存储HTTP联机会话信息,applieation表示服务器上servlet上下文信息,config表示JSP页面的servlet配置信息以及web应用配置描述文件,exception用来处理异常信息,page代表当前页面。

3.request对象的getParameter(string s)方法获取信息,格式:request.getParameter(“参数名”)。

4.中文乱码处理方法

答、(1)首先,将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数据组转化为字符串对象即可。上面所述的处理过程如下所示:

String str=request.getParameter(“ChineseWord”);

byte b[]=str.getBytes(“ISO-8859-1”);

str=new String(b);

通过上述过程,提交的任何信息(无论是汉字或西欧字符)都能正确地显示。

(2)对于以POST方法提交的表单信息中有中文字符,对于JSP页面,可以在获取请求参数之前使用下面的代码:<%request.setCharacterEncoding("gb2312");%>。

(3)当以GET方法提交表单信息时,提交的数据将作为查询字符串被附加到URL的末端,发送到服务器,此时在服务器端调用setCharacterEncoding()方法也就没有作用了,所以还要使用第一种方法。为了方便使用,这里编写了一个方法,每次使用时调用就行。具体代码如下所示:

<%!

public String toChinese(String str) throws java.io.UnsupportedEncodingException

{

byte b[]=str.getBytes("ISO-8859-1");

str=new String(b);

return str;

} %>

5.用request对象获得客户端、服务器等相关信息的获取形式

答、
客户使用的协议是:

<% String protocol=request.getProtocol();

out.println(protocol); %>

6.respronse响应对象作用

答、response对象相关联的类是javax.servlet.http.HttpServletResponse类,主要将JSP 容器处理后的结果返回到客户端,可以通过response变量设置HTTP的状态和向客户端发送数据,如Cookie、HTTP文件头信息等。request对象封装的是客户端提交信息,而response对象封装的是返回客户端的信息。response对象的作用域和request 对象相同,都是在当前页面。如果超出了这个范围,就会失效。在使用response对象之前,需要了解response方法。

7.Cookie

答、Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session 跟踪而储存在用户本地终端上的数据(通常经过加密)。

8.out输出对象主要作用

答、out输出对象用于把结果输出到网页上,与它相关联的是javax.servlet.jsp.JspWrtite 类。

9.application应用程序对象的作用

答、application对象用于在多个程序中保存信息。用来在所有用户间共享信息,并可以在Web应用程序运行期间持久地保持数据。与application相联系的是ServletContext 类,通过使用getServletConfig().getContext()方法得到。一旦创建application对象,该对象将一直保持下去,直到服务器关闭为止。

第七章使用JavaBean组件

1.什么是JavaBean?

答、JavaBean是用Java语言描述的、易用的、与平台无关的软件组件模型,用于设计可重用的组件。

2. JavaBean的四个规则(特征)?

答、JavaBean类必须有一个没有参数的构造函数;JavaBean内的属性都应定义为私有的;

属性值通过getXXX和setXXX来操作;必须有一个public。

3.使用JavaBean过程

答、JavaBean的使用由3个标记相互协作完成,用来在JSP页面中创建一个JavaBean实例,标记和标记用来访问JavaBean的属性值。

4.部署JavaBean类文件

答、编译好的JavaBean部署在应用程序目录下的WEB-INF\classes下。

5. 标记的使用方法

答、语法格式为:

或者