Servlet&JSP课后习题解答 下载本文

(C) 使用response.sendRedirect(\(D) 使用response.sendError(\答案:B

4. 如果想知道使用者所使用的浏览器版本等相关讯息,可以执行哪一段程序代

码: (A) (B) (C) (D) 答案:C

request.getHeaderParameter(\request.getParameter(\request.getHeader(\

request.getRequestHeader(\

5. 如果想取得输出串流对象对浏览器输出位数据,应该撰写哪一段程序代码?

(A)

ResponseStream out = response.getResponseStream();

(B) ResponseStream out = response.getStream();

(C) ResponseStream out = response.getOutputStream();

(D)

ServletOutputStream out = response.getOutputStream();

答案:D

6. 哪几个程序代码可以取得password请求参数的值?

(A) request.getParameter(\

(B) request.getParameters(\

(C) request.getParameterValues(\(D) request.getRequestParameter(\答案:A、C 提示:getParameterValues()会用字符串数组传回指定的请求参数值,如果请求参数只有一个值,则透过指定索引值0也可取得该值。

7. 下面这个程序代码片段会输出什么结果?

PrintWriter writer = response.getWriter(); writer.println(\第一个Servlet程序\

OutputStream stream = response.getOutputStream(); stream.println(\第一个Servlet程序\

(A) 浏览器会看到两段\第一个Servlet程序\的文字 (B) 浏览器会看到一段\第一个Servlet程序\的文字 (C) 丢出IllegalStateException

(D) 由于没有正确地设定内容类型(content-type),浏览器会提示

另存新档

答案:C

9

提示:同一个请求周期中,HttpServletResponse的getWriter()与getOutputStream()只能择一使用,否则会IllegalStateException。

8. 如果要设置响应的内容类型标头,哪几个选项是正确的作法?

(A) response.setHeader(\\(B) response.setContentType(\(C) response.addHeader(\\(D) response.setContentHeader(\答案:A、B、C

9. 下面哪个选项,可以正确地追加自订标头\的值? (A) (B) (C) (D) 答案:C

response.setHeader(\response.appendHeader(\response.addHeader(\response.insertHeader(\

10. 哪几个方法是定义在HttpServletRequest中,而非由ServletRequet

中继承而来?

(A) getMethod()

(B) getHeader() (C) getParameter() (D) getCookies() 答案:A、B、C

提示:与HTTP请求有关的方法,是定义在HttpServletRequest中,与通用请求有关的,是定义在ServletRequest中,例如getParameter()。

? 实作题:

1. 请实作一个Web应用程序,可以将使用者所发送的name请求参数值画在

一张图片上(参考下图,底图可任选)。 提示:可在搜寻引擎下关键词「动态产生图片」寻找解答。参考http://caterpillar.onlyfun.net/Gossip/JSPServlet/DynamicImage.htm,画图的部份不难,主要让学生练习如何取得请求参数、如何使用ServletOutputStream以及利用搜寻引擎寻找解答的能力。

10

图3.20 根据使用者输入动态产生图片内容

2. 请实作一个Web应用程序,可动态产生使用者登入密码(参考下图,仅需

先确作出动态产生密码图片的功能即可,送出窗体后的密码验证功能还不用实现)。

提示:主要是上一题练习的延伸,随机产生四个数字,再画到图片上。这个练习可结合Session属性的运用,就可实作出登入的部份,在第5章讲到Session对象时会再要求实作登入的机制。

图3.21 动态产生登入密码

11

第4章课后练习 课后练习

? 选择题

1. 如果是整个应用程序会共享的数据,则适合存放在哪个对象之中成为属性?

(A) ServletConfig

(B) ServletContext (C) ServletRequest (D) Session 答案:B

2. 如果要取得ServletContext初始参数,则可以执行哪个方法? (A) (B) (C) (D) 答案:C

getContextParameter() getParameter()

getInitParameter() getAttribute()

3. 假设一段程序代码如下,其中PARAM为设定于web.xml中的初始参数:

public class SomeServlet extends HttpServlet { private String param; public SomeServlet() {

param = getInitParameter(\ } … }

以下何者正确?

(A) param被设定为web.xml中的初始参数值 (B) 无法通过编译

(C) 应该改用getServletParameter()方法 (D) 发生NullPointerException 答案:D 提示:getInitParameter()也是透过ServletConfig来取得初始参数,在建构式执行时,由于尚未进行Servlet初始化,ServletConfig尚未经由init()

12