8. 在Web应用程序中有以下的程序代码,执行后转发至某个JSP网页:
Map map = new HashMap();
map.put(\request.setAttribute(\
以下哪个选项可以正确地使用EL取得map中的值?
(A) ${map.local.role} (B) ${login.local.role} (C) ${map[\(D) ${login[\答案:D
9. 在Web应用程序中有以下的程序代码,执行后转发至某个JSP网页:
List names = new ArrayList(); names.add(\
request.setAttribute(\
以下哪个选项可以正确地使用EL取得List中的值? (A) (B) (C) (D) 答案:B、D
${names.0} ${names[0]} ${names.[0]} ${names[\
提示:在[]指定索引值时可以用双引号,所以D也是正确的。
10. 以下何者不是EL隐含物件? (A) (B) (C) (D) 答案:B
param request
pageContext cookie
? 实作题
1. 先前章节实作在线留言版时,使用Servlet来实现画面的输出,请将之改为
JSP,并尽量使用本章所学得的JSP元素,减少Scriptlet的使用。
31
第9章课后练习
? 选择题
1. 哪些JSTL标签可用来进行Java程序中if、if..else的功能? (A)
(D)
2. 如果打算使用request对象的setCharacterEncoding()方法设定字
符编码处理方式,则以下哪个JSTL标签可以让你不用使用Scriptlet? (A) (B) (C) (D) 答案:B
3. 如果taglib设定如下:
<%@taglib prefix=\
则以下何者会是使用自订标签的正确方式? (A) (B) (C) (D) 答案:D
4. 在使用Tag File自订标签时,若JSP中有以下的内容:
<%@taglib prefix=\
以下何者描述正确?
(A) 可以
32
5. 关于tag指示元素的body-content属性,以下说明何者正确? (A) 可设定的值有JSP、scriptless、empty与tagdependent (B) 默认值是scriptless
(C) 设定为tagdependent时,本体内容将不作任何处理直接传入
Tag File中
(D) 如果本体中要执行Scriptlet,则要设定为JSP 答案:B、C
提示:可设定的值只有scriptless、empty与tagdependent,预设是scriptless。无论如何,Tag File的本体是绝不能有Scriptlet。
6. 在继承SimpleTagSupport后,doTag()的实作如下:
public void doTag() throws JspException { try {
if(test) {
getJspBody(). ; }
} catch (java.io.IOException ex) {
throw new JspException(\执行错误\ } }
如果test为true时,将执行本体内容并输出结果至浏览器,则空白部份应填入? (A) (B) (C) (D) 答案:C
invoke()
invoke(new JspWriter()) invoke(null)
invoke(new PrintWriter())
7. 在继承SimpleTagSupport后,doTag()的实作如下:
public void doTag() throws JspException { try {
if(test) { // ... } else {
throw new ; }
} catch (java.io.IOException ex) {
33
throw new JspException(\执行错误\ } }
如果test为false时,希望能中断JSP后续页面的处理?则空白部份应填入? (A) (B) (C) (D) 答案:A
SkipPageException() IOException()
ServletException() Exception()
8. 在继承TagSupport后,有个程序片段实作如下:
public int ______ ______ throws JspException { if(test) { // ...
return EVAL_PAGE; }
return SKIP_PAGE; }
如果test为false时,希望能中断JSP后续页面的处理?则空白部份应是实作哪个方法? (E) (F) (G) (H) 答案:G
doTag()
doStartTag() doEndTag() doAfterBody()
9. 在继承BodyTagSupport类别实作自订标签时,基本上doStartTag()
方法可以传回的有效值有哪几个? (A) SKIP_BODY
(B) EVAL_BODY_BUFFERED (C) EVAL_BODY_INCLUDE (D) EVAL_PAGE 答案:A、B、C
10. 在TagSupport类别的实作中,doStartTag()、doEndTag()的预设传
回值是?
34
(A) SKIP_BODY、EVAL_PAGE
(B) EVAL_BODY_INCLUDE、EVAL_PAGE (C) EVAL_BODY_INCLUDE、SKIP_PAGE (D) SKIP_BODY、SKIP_PAGE 答案:A
? 实作题
1. 请开发一个自订标签,可以如下使用:
你可以指定某个目录,这个自订卷标将取得该目录下所有图片的路径,并设定给var所指定的变量名称,之后在标签本体中可以使用该名称(像上例使用${image}搭配卷标将图片显示在浏览器上)。 2. 请将第8章课后练习的留言版程序,JSP页面中的Scriptlet使用EL、JSTL
或自订标签取代,让JSP页面中不出现任何的Scriptlet。
35