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

成功讯息、使用者名称、留言与头像。下图是个简单的示范。

图4.10 新增留言成功

提示:这个练习可以让学生模仿书中在线书签的制作流程与方式。可建议学生先如第3章实作简单的「观看留言」及「新增留言」功能。再进一步根据第4章改写,利用ServletConfig读取Servlet初始参数,利用ServletContext读取应用程序初始参数等。

17

第5章课后练习

? 选择题

1. 在浏览器禁用Cookie的情况下,哪些机制仍可以用于会话管理?

(A) HttpSession (B) URL重写 (C) 隐藏字段 (D) Cookie API 答案:B、C

2. 如何设定Cookie的有效期限?

(A) 使用setMaxAge()

(B) 使用setMaxInactive()

(C) 使用setMaxInactiveInterval() (D) 在web.xml中设定 答案:A

3. web.xml中的设定单位是? (A) (B) (C) (D) 答案:B

时 分 秒 毫秒

4. 何者可以实作使用者的自动登入机制? (A) (B) (C) (D) 答案:B

HttpSession Cookie

HttpServletRequest URL重写

5. 关于HttpSession的setMaxInactiveInterval()方法,以下描述何

者错误?

(A) 设定的单位是「分」

(B) 用来设定HttpSession在浏览器多久没活动后失效 (C) 用来设定Cookie的失效时间

18

(D) 会覆盖web.xml中的设定 答案:A、C

6. 关于HttpSession的描述,以下何者错误?

(A) 关闭浏览器后HttpSession就会被回收 (B) 可以执行invalidate()使之失效

(C) 不同的浏览器使用相同的Session ID,也会取得不同的

HttpSession对象

(D) HttpSession的setMaxInactiveInterval()方法设定为-1

将永不失效

答案:A、C

提示:关闭浏览器后立即失效的是储存Session ID的Cookie,不是HttpSession对象。

7. 哪几个对象提供有setAttribute()方法? (A) ServletRequest (B) HttpSession (C) ServletConfig (D) ServletContext 答案:A、B、D

8. 关于Servlet/JSP的Session ID,何者正确?

(A) 预设使用Cookie来储存Session ID (B) Cookie的名称是JSESSIONID

(C) 在禁用Cookie时,可以使用URL重写来发送Session ID (D) 必须自行呼叫HttpSession的getId()方可产生 答案:A、C

提示:Session ID的Cookie名称是厂商各自实作的,JSESSIONID在Tomcat上的实作名称。容器会自动帮你产生Session ID。

9. 哪几个对象的属性设定可以跨越请求范围? (A) (B) (C) (D) 答案:B、D

ServletRequest HttpSession ServletConfig ServletContext

10. HttpSession失效的时机为何?

19

(A) 执行invaliate()方法

(B) 下次请求超过web.xml中的设定时间 (C) 存活时间超过setMaxInactiveInterval()方法设定的时间 (D) 关闭浏览器 答案:A、B 提示:无论是或setMaxInactiveInterval()所设定的时间,都是指浏览器没有再次请求活动的时间,而不是指HttpSession本身的存活时间。

? 实作题

1. 请实作一个Web应用程序,可动态产生使用者登入密码,送出窗体后必须

通过密码验证才可观看到使用者页面。

提示:此题仍第3章课后练习第2个实作题之延伸。

图5.10 图片验证

2. 实作一个登入窗体,如果使用者核取「记住名称、密码」,则下次造访窗体

时,将会自动在名称、密码字段填入上次登入时所使用的值。

图5.11 记住名称、密码

20