方法传入Servlet之中,所以建构式中尝试取得初始参数时就会发生NullPointerException。
4. 继承HttpServlet之后,若要进行Servlet初始化,重新定义哪个方法才是正
确的作法? (A) public void init(ServletConfig config) throws
ServletException;
(B) public void init() throws ServletException (C) public String getInitParameter(String name) (D) public Enumeration getInitParameterNames() 答案:B
5. 关于ServletContext初始参数,以下哪两项是web.xml中正确的设定?
(A)
(B)
(C)
(D)
答案:B、D
6. 若要读取WEB-INF/data.txt档案的数据,以下哪个是正确的作法?
13
(A) FileInputStream input =
new FileInputStream(\
(B) FileInputStream input = new FileInputStream(
new File(\
(C) InputStream input =
getResourceAsStream(\
(D) FileInputStream input =
getResourceAsStream(\
答案:C
7. ServletContext定义与属性相关的方法是哪三个? (A) getAttribute(); (B) setAttribute(); (C) deleteAttribute() (D) removeAttribute(); 答案:A、B、D
8. 若web.xml中有以下的设定:
而某个Servlet撰写了以下的程序代码:
public void init() throws ServletException { super.init();
int param1 = getInitParameter(\ int param2 = getInitParameter(\}
以下何者描述正确?
(A) 第二对
14
(B) param1的值为1,param2的值为1 (C) 应该在建构式中进行初始参数的取得 (D) Servlet类别原始档无法通过编译 答案:D
提示:getInitParameter()取得的是字符串。
9. 哪几个对象提供有getAttribute()方法?
(A) ServletRequest (B) HttpServlet (C) ServletConfig
(D) ServletContext 答案:A、D
提示:事实上还有一个,HttpSession对象。只不过到本章还没介绍到HttpSession的使用。
10. 在web.xml中有以下的设定:
以下何者正确?
(A) SomeListener类别要实作ServletContextListener接口 (B) 每生成一个Servlet实例就会呼叫ServletContextListener
的init()方法
(C) Web应用程序初始化之后,会呼叫ServletContextListener
的contextInitialized()方法 (D) 不需要
? 实作题
1. 请使用目前所学得的Servlet相关技巧,实作一个在线留言版程序,其中必
须包括以下的功能:
(1). 有个档案会储存留言,应用程序初始时,必须从该档案中加载留言记录。 (2). 「观看留言」功能,每笔留言中包括了留言者的头像、名称与留言讯息。
15
下图是个简单的示范。
图4.8 观看留言
(3). 动态「留言窗体」功能,新增留言时使用的窗体。其中包括了输入留言
者名称、留言的字段,并可以让使用者选取头像。头像存放的目录可以由Servlet初始参数设定。窗体必须可以自动显示头像存放目录中的图
片,有多少图片就显示多少个头像。若新增留言失败也会将请求转发回窗体,此时要显示错误讯息以及使用者先前填写的名称与留言。下图是个简单的示范。
图4.9 新增留言窗体
(4). 「新增留言」功能,必须作基本的请求参数检查。留言失败及成功的
URL,必须可以由Servlet初始参数来设定。留言成功时必须显示留言
16