《JavaWeb编程技术》课后习题答案.docx

上传人:wj 文档编号:4716803 上传时间:2023-05-07 格式:DOCX 页数:20 大小:144.61KB
下载 相关 举报
《JavaWeb编程技术》课后习题答案.docx_第1页
第1页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第2页
第2页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第3页
第3页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第4页
第4页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第5页
第5页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第6页
第6页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第7页
第7页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第8页
第8页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第9页
第9页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第10页
第10页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第11页
第11页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第12页
第12页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第13页
第13页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第14页
第14页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第15页
第15页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第16页
第16页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第17页
第17页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第18页
第18页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第19页
第19页 / 共20页
《JavaWeb编程技术》课后习题答案.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《JavaWeb编程技术》课后习题答案.docx

《《JavaWeb编程技术》课后习题答案.docx》由会员分享,可在线阅读,更多相关《《JavaWeb编程技术》课后习题答案.docx(20页珍藏版)》请在冰点文库上搜索。

《JavaWeb编程技术》课后习题答案.docx

JavaWeb编程习题解析

第1章习题解析

1.略。

什么是URL,什么是URI,它们都由哪几个部分组成,URL和URI之间有什么关系?

2.答:

URL称为统一资源定位符,URL通常由4部分组成:

协议名称、页面所在主机的DNS名、可选的端口号和资源的名称。

URI称为统一资源标识符,是以特定语法标识一个资源的字符串。

URI由模式和模式特有的部分组成,它们之间用冒号隔开,一般格式如下:

schema:

schema-specific-part

URI是URL和URN的超集。

3.答:

①是URL,①和②都是URI,③是URN

动态web文档技术有哪些?

服务器端动态文档技术的客户端动态文档技术有何不同?

4.答:

动态Web文档技术包括服务器端动态文档技术和客户端动态文档技术,前者包括CGI技术、服务器扩展技术和HTML页面中嵌入脚本技术。

其中HTML页面中嵌入脚本技术包括ASP、PHP和JSP技术。

最流行的客户端动态文档技术是在HTML页面中嵌入JavaScript脚本代码。

使用JavaScript可以设计交互式页面。

与服务器端动态文档不同,JavaScript脚本是在客户端执行的。

什么是Servlet?

什么是Servlet容器?

它的主要作用是什么?

5.答:

Servlet是用ServletAPI开发的Java程序,它运行在Servlet容器中。

Servlet容器是运行Servlet的软件,主要用来扩展Web服务器的功能。

简述开发一个Servlet的上体步骤

6.答:

开发Servlet的一般步骤包括:

(1)编写Servlet源程序;

(2)编译;(3)将Servlet部署到Servlet容器中;(4)访问执行Servlet。

要使一个Servlet能够正确编译的运行,应该将什么文件加到CLASSPATH环境变量中?

7.答:

\lib\servlet-api.jar文件。

web应用程序的部署描述文件名是什么?

它是什么类型的文件?

应该存放在什么目录中?

8.答:

部署描述文件名是web.xml,它是XML文件,应该存放在Web应用程序的\WEB-INF目录中。

什么是404错误?

9.答:

当服务器找不到用户请求的资源时将发生404错误。

什么是JSP页面?

它与HTML页面有什么关系?

10.答:

JSP页面是嵌入了Java脚本元素的HTML页面。

Servlet与JSP各适用于什么场合?

11.答:

Servlet主要用来实现业务逻辑和控制逻辑,JSP页面主要用来实现表示逻辑。

第2章习题解析

Servlet接口中定义了哪几个方法?

1.答:

Servlet接口定义了下面5个方法:

publicvoidinit(ServletConfigconfig)

publicvoidservice(ServletRequestrequest,ServletResponseresponse)

throwsServletException,IOException

publicvoiddestroy()

publicServletConfiggetServletConfig()

publicStringgetServletInfo()

简述Servlet的生命周期,生命周期方法有哪几个?

2.答:

Servlet是在容器中运行的组件,有一个从创建到销毁的过程,其中包括加载和实例化、初始化、提供服务以及销毁几个阶段。

其中生命周期方法有init()、service()和destroy()等3个。

发生哪些事件,浏览器会向服务器发出请求?

3.答:

发生下列事件,浏览器向服务器发出请求。

(1)用户点击了HTML页面中的超链接;

(2)用户在HTML页面中填写一个表单并点击提交按钮;

(3)用户在浏览器的地址栏中输入URL并按回车键。

4.答:

查询串

5.答:

HTTP请求结构由请求行、请求头、空行和请求数据组成。

请求行由方法名、请求资源的URI和使用的HTTP版本3部分组成。

6.答:

HTTP响应结构由状态行、响应头和响应数据3部分组成。

状态行由HTTP版本、状态码和简短描述3部分组成。

7.答:

GET请求主要用来从服务器检索资源,POST请求主要用来向服务器发送数据。

它们的详细比较请参阅教材的表2.8。

8.答:

在ServletRequet接口中定义了setAttribute()、getAttribute()、getAttributeNames()和removeAttribute()方法来处理请求作用域的属性。

9.答:

forward()方法转发请求是服务器端控制权的转向,客户端地址栏中不显示转发后的资源地址。

sendRedirect()方法是服务器向浏览器发送302状态码,它使浏览器连接到新的位置,浏览器地址栏可看到地址的变化。

使用重定向,资源不能位于WEB-INF目录中。

10.答:

可先通过请求对象的getParameterNames()方法得到Enumeration对象,然后在其上得到每个请求参数名,再通过getParameter()得到请求参数值。

11.答:

A12.答:

B13.答:

E

14.答:

action="courseServlet.do"

HttpServlet

com.demo.CourseServlet

courseServlet

15.答:

①E②D③C④B⑤A

第3章习题解析

1.答:

Web应用程序是运行在应用服务器之中的。

应用服务器为Web应用程序提供一种简单的和可管理的对系统资源的访问机制。

2.答:

web.xmlbankapp\WEB-INF

3.答:

D4.答:

A5.答:

D

6.答:

F7.答:

E8.答:

D

9.答:

getServletConfig().getServletContext()或getServletContext()

10.答:

B11.答:

B12.答:

D

13.答:

因为Applet只能运行在客户端,所以可以将它放在Web应用程序的文档根目录的任何位置,但不能将其放在WEB-INF目录或其子目录中。

14.答:

不能这样做,至少不能直接这样。

部署描述文件不允许为一个名称指定多个参数,所以必须像下面这样:

countries

Australia,Brazil,India,UK,US

然后在Servlet中解析param-value串的值并解释字符串中列出的多个值。

15.答:

packagecom.demo;

importjavax.servlet.*;

importjavax.servlet.http.*;

importjava.io.*;

publicclassHelloCounterServletextendsHttpServlet{

privateIntegervisits=0;

publicvoiddoGet(HttpServletRequestrequest,

HttpServletResponseresponse)

throwsIOException,ServletException{

response.setContentType("text/html;charset=gb2312");

PrintWriterout=response.getWriter();

visits=visits+1;

try{

Thread.sleep(2000);

}catch(InterruptedExceptione){

log("Exceptionduringsleeping.");

}

out.println("");

out.println("欢迎您!


"+"该Servlet已被访问"+visits+"次。

");

out.println("");

}

}

修改后的Servlet如下:

packagecom.demo;

importjavax.servlet.*;

importjavax.servlet.http.*;

importjava.io.*;

publicclassHelloCounterServletextendsHttpServlet{

privateIntegervisits=0;

privateStringdbPath=null;

publicvoidinit(){

try{

dbPath=getServletContext().getRealPath("/WEB-INF/counter.db");

FileInputStreamfis=newFileInputStream(dbPath);

DataInputStreamdis=newDataInputStream(fis);

visits=dis.readInt();

dis.close();

}catch(Exceptione){

log("Errorloadingpersistentcounter",e);

}

}

publicvoiddoGet(HttpServletRequestrequest,

HttpServletResponseresponse)

throwsIOException,ServletException{

response.setContentType("text/html;charset=gb2312");

PrintWriterout=response.getWriter();

synchronized(this){

visits=visits+1;

out.println("");

out.println("欢迎您!


"+"该Servlet已被访问"+visits+"次。

");

out.println("");

}

}

publicvoiddestroy(){

try{

FileOutputStreamfos=newFileOutputStream(dbPath);

DataOutputStreamdos=newDataOutputStream(fos);

dos.writeInt(visits);

dos.close();

}catch(Exceptione){

log("Errorstoringpersistentcounter",e);

}

}

}

第4章习题解析

1.答:

使用请求对象(即HttpServletRequest接口)的getSession()方法。

2.答:

如果客户在指定时间内没有访问服务器,则该会话超时。

对超时的会话对象,服务器使其失效。

通过会话对象的setMaxInactiveInterval()方法设置会话最大超时时间。

web.xml文件使用元素的子元素设置最大超时时间,如下所示。

20

这里的最大超时时间是对整个应用程序的所有会话有效,元素指定的时间单位是分钟。

setMaxInactiveInterval()方法参数单位是秒。

3.答:

有些客户浏览器可能不支持Cookie或用户阻止所有的Cookie,此时不能用Cookie实现会话。

4.答:

使用响应对象(即HttpServletResponse接口)的encodeURL()方法或encodeRedirectURL()方法。

5.答:

不能。

因为许多用户是通过代理服务器访问Internet的,此时服务器得到的是代理服务器的IP地址而不是实际用户的IP地址,因此这些用户的IP地址不唯一。

6.答:

D7.答:

A,B8.答:

A,D

9.答:

C10.答:

A,C11.答:

C

12.答:

C,D13.答:

B,C14.答:

C

15.答:

B16.答:

A17.答:

C

18.答:

A,B,D,F

19.答:

具有很大的影响。

该应用程序将不能维护用户的状态。

Servlet容器将为每个客户的每次请求都创建一个新的会话。

修改这个问题的唯一方法是修改Servlet代码加入URL重写功能。

第5章习题解析

1.答:

包含JSP指令、JSP小脚本和JSP表达式。

2.答:

合法的JSP表达式:

<%=500%>

<%=anInt*3.5/100-500%>

<%=aBool%>

<%=false%>

<%=!

false%>

<%=getChar()%>

<%=Math.random()%>

<%=aFloatObj%>

<%=aFloatObj.floatValue()%>

<%=aFloatObj.toString()%>

不合法的JSP表达式:

<%=aVector%>

<%=aBool;%>

<%=inti=20%>

<%=sBuff.setLength(12);%>

3.答:

C

4.答:

正确声明应为:

<%!

inti=5;%>

<%!

intgetI(){returni;}%>

5.答:

B是合法的。

解析:

JSP表达式中百分号和等号之间不能有空格。

6.答:

D。

解析:

A中import的属性值中应该有等号。

B的import属性值应该在一个字符串中指定。

C,属性之间不允许有逗号。

E,bgcolor不是合法的属性名。

F,true不是buffer属性合法值。

G,指令名、属性名和值都是大小写敏感的,Page应为page。

7.答:

B,C

A.非法:

等号表明它是表达式,但表达式不能以分号结束,产生的Servlet代码将发生语法错误。

out.print(myObj.m1(););

B.合法:

<%=x=y%>将被转换成:

out.print(x=y);//y的值5赋给x并将其打印输出

C.合法:

这是合法的小脚本,因为在方法调用语句的后面有分号。

即使该方法返回一个值,它也是合法的,因为返回的值将被忽略。

8.答:

不能在小脚本中定义方法。

上面代码一旦被转换成Servlet,_jspService()方法就会像下面这样:

publicvoid_jspService(...){

//其他代码

intx=0;

intincr(){return++x;}

out.write("Thevalueofxis");

out.print(incr());

}

由于incr()方法定义在_jspService()方法内,所以代码不能编译。

9.答:

Thevalueofiis3

注意:

如果代码写成下面形式:

<%inti;%>

<%for(i=0;i<3;i++)%>Thevalueofiis<%=i%>

输出结果将为:

ThevalueofiisThevalueofiisThevalueofiis3

10.答:

不能在japInit()方法中使用application对象。

11.答:

Thesumofxandyis9

变量x将被声明两次:

一次是作为类的全局变量,因为使用了<%!

intx=5;%>语句,另一次是在_jspService()方法中声明的局部变量,因为使用的代码是<%intx=3;%>。

12.答:

B13.答:

C,E

14.答:

②③⑥④①⑤

15.答:

out.write("\r\n");

intcount=0;

out.write("Thepagecountisnow:

\r\n");

out.print(++count);

out.write("\r\n");

16.答:

Page改为page

<%!

intcount=0%>//声明缺少分号

<%count++;%>//去掉分号

17.答:

D

18.答:

<%Floatone=newFloat(88.88)%>小脚本

<%!

inty=3;%>声明

<%@pageimport="java.util.*"%>指令

includepage="foo.jsp"/>动作

<%=pageContext.getAttribute("foo")%>表达式

email:

${applicationScope.mail}EL表达式

19.答:

A,B,C,E20.答:

A,B,C,D

21.答:

D22.答:

C

23.答:

request(javax.servlet.http.HttpServletRequest)

response(javax.servlet.http.HttpServletResponse)

out(javax.servlet.jsp.JspWriter)

session(javax.servlet.http.HttpSession)

application(javax.servlet.ServletContext)

config(javax.servlet.ServletConfig)

exception(java.lang.Throwable)

pageContext(javax.servlet.jsp.PageContext)

page(java.lang.Object)

24.答:

共有4个作用域对象:

application、session、request和pageContext。

用setAttribute()方法和getAttribute()方法在这些对象上设置和获得属性。

在application作用域上的对象可以被Servlet容器的所有的Web应用程序访问。

25.答:

可以使用pageContext的findAttribute()方法,该方法将依次在页面作用域、请求作用域、会话作用域和应用作用域中查找指定名称的属性。

第6章习题解析

1.答:

B2.答:

3.答:

这两种表示等价,但第一种表示使用了JSP脚本元素,第二种表示使用的是动作。

它们的功能类似,但有一点细微的差别。

pageContext.include()方法在包含其他组件之前总是刷新当前页面的输出,而

include>只有在flush属性值明确设置为true时才刷新当前页面的输出,如下所示:

includepage="other.jsp"flush="true"/>

4.答:

请求对象的getParameter()方法的返回值类型是String,因此display.jsp中的Integer应改为String。

使用

param>和request.getParameter()机制只能传递和检索String类型的参数。

要传递其他对象类型的参数,必须在包含页面中使用request.setAttribute(),在被包含页面中使用request.getAttribute()。

5.答:

D6.答:

C7.答:

B

8.答:

可以。

页面customerDisplay.jsp文件可以使用

getProperty>输出bean的属性值,只要它也包含一个与customerInput.jsp相同的

useBean>声明并且该声明出现在

getProperty>声明前面即可。

9.答:

<%@pageimport="com.model.CustomerBean,com.model.BusinessCustomerBean"%>

useBeanid="customer"class="com.model.BusinessCustomerBean"

type="com.model.CustomerBean"scope="application"/>

setPropertyname="customer"value="Smith@"/>

setPropertyname="customer"value="8899123"/>

useBean>

10.答:

不能在同一个

useBean>声明中同时使用beanName和class属性。

11.答:

必须使用property指定bean的属性。

param用来指定请求参数,并且不能在同一个

setProperty>动作中同时指定param和value属性。

12.答:

使用代码段1是只有在指定作用域中找不到customer的bean对象时才执行标签体,使用代码段2在任何时

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2