(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