成功讯息、使用者名称、留言与头像。下图是个简单的示范。
图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中设定
3. web.xml中
时 分 秒 毫秒
4. 何者可以实作使用者的自动登入机制? (A) (B) (C) (D) 答案:B
HttpSession Cookie
HttpServletRequest URL重写
5. 关于HttpSession的setMaxInactiveInterval()方法,以下描述何
者错误?
(A) 设定的单位是「分」
(B) 用来设定HttpSession在浏览器多久没活动后失效 (C) 用来设定Cookie的失效时间
18
(D) 会覆盖web.xml中
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中
? 实作题
1. 请实作一个Web应用程序,可动态产生使用者登入密码,送出窗体后必须
通过密码验证才可观看到使用者页面。
提示:此题仍第3章课后练习第2个实作题之延伸。
图5.10 图片验证
2. 实作一个登入窗体,如果使用者核取「记住名称、密码」,则下次造访窗体
时,将会自动在名称、密码字段填入上次登入时所使用的值。
图5.11 记住名称、密码
20