设计 任务书 文档 开题 答辩 说明书 格式 模板 外文 翻译 范文 资料 作品 文献 课程 实习 指导 调研 下载 网络教育 计算机 网站 网页 小程序 商城 购物 订餐 电影 安卓 Android Html Html5 SSM SSH Python 爬虫 大数据 管理系统 图书 校园网 考试 选题 网络安全 推荐系统 机械 模具 夹具 自动化 数控 车床 汽车 故障 诊断 电机 建模 机械手 去壳机 千斤顶 变速器 减速器 图纸 电气 变电站 电子 Stm32 单片机 物联网 监控 密码锁 Plc 组态 控制 智能 Matlab 土木 建筑 结构 框架 教学楼 住宅楼 造价 施工 办公楼 给水 排水 桥梁 刚构桥 水利 重力坝 水库 采矿 环境 化工 固废 工厂 视觉传达 室内设计 产品设计 电子商务 物流 盈利 案例 分析 评估 报告 营销 报销 会计
 首 页 机械毕业设计 电子电气毕业设计 计算机毕业设计 土木工程毕业设计 视觉传达毕业设计 理工论文 文科论文 毕设资料 帮助中心 设计流程 
垫片
您现在所在的位置:首页 >>毕设资料 >> 文章内容
                 
垫片
   我们提供全套毕业设计和毕业论文服务,联系微信号:biyezuopin QQ:2922748026   
Servlet&JSP课后习题解答
文章来源:www.biyezuopin.vip   发布者:毕业作品网站  

<param-name>param1</param-name>

<param-value>1</param-value>

</init-param>

<init-param>

<param-name>param2</param-name>

<param-value>2</param-value>

</init-param>

</servlet>

而某个Servlet撰写了以下的程序代码:

public void init() throws ServletException {

super.init();

int param1 = getInitParameter("param1");

int param2 = getInitParameter("param2");

}

以下何者描述正确?

(A) 第二对<param-name>、<param-value>可以直接撰写在第一个<init-param>之中

(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中有以下的设定:

<web-app ...>

<listener>

<listener-class>cc.openhome.SomeListener</listener-class>

</listener>

...

<web-app>

以下何者正确?

(A) SomeListener类别要实作ServletContextListener接口

(B) 每生成一个Servlet实例就会呼叫ServletContextListener的init()方法

(C) Web应用程序初始化之后,会呼叫ServletContextListener的contextInitialized()方法

(D) 不需要<listener-class>这个标签

答案:A、C

l 实作题

1. 请使用目前所学得的Servlet相关技巧,实作一个在线留言版程序,其中必须包括以下的功能:

(1). 有个档案会储存留言,应用程序初始时,必须从该档案中加载留言记录。

(2). 「观看留言」功能,每笔留言中包括了留言者的头像、名称与留言讯息。下图是个简单的示范。

图4.8 观看留言

(3). 动态「留言窗体」功能,新增留言时使用的窗体。其中包括了输入留言者名称、留言的字段,并可以让使用者选取头像。头像存放的目录可以由Servlet初始参数设定。窗体必须可以自动显示头像存放目录中的图片,有多少图片就显示多少个头像。若新增留言失败也会将请求转发回窗体,此时要显示错误讯息以及使用者先前填写的名称与留言。下图是个简单的示范。

图4.9 新增留言窗体

(4). 「新增留言」功能,必须作基本的请求参数检查。留言失败及成功的URL,必须可以由Servlet初始参数来设定。留言成功时必须显示留言成功讯息、使用者名称、留言与头像。下图是个简单的示范。

图4.10 新增留言成功

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


第5章课后练习

l 选择题

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

(A) HttpSession

(B) URL重写

(C) 隐藏字段

(D) Cookie API

答案:B、C

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

(A) 使用setMaxAge()

(B) 使用setMaxInactive()

(C) 使用setMaxInactiveInterval()

(D) 在web.xml中设定<cookie-timeout>

答案:A

3. web.xml中<session-timeout>的设定单位是?

(A) 时

(B) 分

(C) 秒

(D) 毫秒

答案:B

4. 何者可以实作使用者的自动登入机制?

(A) HttpSession

(B) Cookie

(C) HttpServletRequest

(D) URL重写

答案:B

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

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

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

(C) 用来设定Cookie的失效时间

(D) 会覆盖web.xml中<session-timeout>的设定

答案: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) ServletRequest

(B) HttpSession

(C) ServletConfig

(D) ServletContext

答案:B、D

10. HttpSession失效的时机为何?

(A) 执行invaliate()方法

(B) 下次请求超过web.xml中<session-timeout>的设定时间

(C) 存活时间超过setMaxInactiveInterval()方法设定的时间

(D) 关闭浏览器

答案:A、B

提示:无论是<session-timeout>或setMaxInactiveInterval()所设定的时间,都是指浏览器没有再次请求活动的时间,而不是指HttpSession本身的存活时间。

l 实作题

1. 请实作一个Web应用程序,可动态产生使用者登入密码,送出窗体后必须通过密码验证才可观看到使用者页面。

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

图5.10 图片验证

2. 实作一个登入窗体,如果使用者核取「记住名称、密码」,则下次造访窗体时,将会自动在名称、密码字段填入上次登入时所使用的值。

图5.11 记住名称、密码


第6章课后练习

l 选择题

1. 关于过滤器的描述,以下何者正确?

(A) Filter接口定义了init()、service()与destroy()方法

(B) 会传入ServletRequest与ServletResponse至Filter

(C) 要执行下一个过滤器,必须执行FilterChaing的next()方法

(D) 如果要取得初始参数,要使用FilterConfig物件

答案:B、D

2. 关于以下web.xml的设定:

<filter>

<filter-name>SecurityFilter</filter-name>

<filter-class>cc.openhome.SecurityFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>SecurityFilter</filter-name>

<url-pattern>*.do</url-pattern>

<init-param>

<param-name>USER</param-name>

<param-value>caterpillar</param-value>

</init-param>

<init-param>

<param-name>PASSWORD</param-name>

<param-value>123456</param-value>

</init-param>

</filter-mapping>

以下描述何者正确?

(A) 根据<filter-mapping>,过滤器会套用在所有以.do结尾的URL请求

(B) 可以透过FilterConfig来读取USER与PASSWORD初始参数

(C) 初始参数设定位置错误,<init-param>等标签应放在<filter>标签之中

(D) <url-pattern>应改为<servlet-name>才是正确设定

答案:A、C

提示:由于初始参数的设定错误,无法透过FilterConfig取得初始参数。

3. 关于以下的web.xml设定:

<filter-mapping>

<filter-name>SecurityFilter</filter-name>

<url-pattern>/add.do</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>SecurityFilter</filter-name>

<url-pattern>*.view</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>CharacterFilter</filter-name>

<url-pattern>/add.do</url-pattern>

</filter-mapping>

以下描述何者正确?

(A) 当请求add.do时,只会套用SecurityFilter

(B) 当请求add.do时,过滤器的执行顺序为SecurityFilter、CharacterFilter

(C) 当请求list.view时,过滤器的执行顺序为SecurityFilter、CharacterFilter

(D) 当请求list.view时,只会套用SecurityFilter

答案:B、D

4. 关于FilterChain的描述,何者正确?

(A) 如果不呼叫FilterChain的doFilter()方法,则请求略过接下来的过滤器而直接交给Servlet

(B) 如果有下一个过滤器,呼叫FilterChain的doFilter()方法,会将请求交给下一个过滤器

(C) 如果没有下一个过滤器,呼叫FilterChain的doFilter()方法,会将请求交给Servlet

(D) 如果没有下一个过滤器,呼叫FilterChain的doFilter()方法没有作用

答案:B、C

5. 关于FilterConfig的描述,何者错误?

(A) 会在Filter界面的init()方法呼叫时传入

(B) 为web.xml中<filter>设定的代表对象

(C) 可读取<servlet>标签中<init-param>所设定的初始参数

(D) 可使用getInitParameter()方法读取初始参数

答案:C

6. 以下的程序代码将实作请求包裹器:

public class MyRequestWrapper ________________ {

public MyRequstWrapper(HttpServletRequest request) {

super(requset);

}

….

}

请问空白处应该填上哪个程序代码片段?

(A) implements ServletRequest

(B) extends ServletRequestWrapper

(C) implements HttpServletRequest

(D) extends HttpServletRequestWrapper

答案:D

提示:因为建构式中直接使用传入的HttpServletRequest对象及super()来呼叫父类别建构式,所以一定是继承HttpServletRequestWrapper。

7. 关于请求包裹器,以下描述何者正确?

(A) 可以实作ServletRequest界面

(B) 可以继承ServletRequestWrapper类别

(C) 一定要继承ServletRequestWrapper类别

(D) HttpServletRequestWrapper是ServletRequestWrapper的子类别

答案:A、B、D

提示:要自己实作ServletRequest接口来实作请求包裹器也是可以的,只是所有的方法都要自行实作。

8. 关于HttpServletRequestWrapper与HttpServletResponseWrapper的描述,何者有误?

(A) 分别实作了HttpServletRequest界面与HttpServletResponse界面

(B) 分别继承了ServletRequestWrapper与ServletResponseWrapper类别

(C) 实作时,至少要重新定义一个父类别中的方法

(D) 实作时必须在建构式中呼叫父类别建构式

答案:C

9. 在开发过滤器时,以下何者是正确的观念?

(A) 必须考虑前后过滤器之间的关系

(B) 挂上过滤器后不改变应用程序原有的功能

(C) 设计Servlet时必须考虑到未来加装过滤器的需求

(D) 每个过滤器要设计为独立互不影响的组件

答案:B、D

10. 关于Filter界面上的doFilter()方法之说明,何者有误?

(A) 会传入两个参数HttpServletRequest、HttpServletResponse

(B) 会传入三个参数HttpServletRequest、HttpServletResponse、FilterChain

(C) 前一个过滤器呼叫FilterChain的doFilter()后,会执行目前过滤器的doFilter()方法

(D) 前一个过滤器的doFilter()执行过后,会执行目前过滤器的doFilter()方法

答案:A、B、D

提示:Filter的doFilter()方法上三个参数是ServletRequest、ServletResponse、FilterChain。前一个过滤器的doFilter()执行时,当中必须呼叫FilterChain的doFilter()方法,才会执行目前过滤器的doFilter()方法。

l 实作题

1. 模仿本单元综合练习,重构第4章元课后练习中的留言版程序,将从档案读写留言版讯息的职责封装至一个MessageServlce类别中。。

2. 你的留言版程序不允许使用者输入HTML标签,但可以允许使用者输入一些代码作些简单的样式。例如:

l [b]粗体[/b]

l [i]斜体[/i]

l [big]放大字体[/big]

l [small]缩小字体[/small]

HTML的过滤功能,你可以直接使用本章所开发的字符过滤器,并且请另行开发一个过滤器来完成代码替换的功能。


第7章课后练习

l 选择题

1. 以下哪几个倾听器,必须在web.xml中设定?

(A) HttpSessionListener

(B) RequestListener

(C) ServletContextListener

(D) ServletAttributeListener

答案:A、C

提示:没有B、D这两种倾听器。

2. 以下何者为倾听器的事件类型之一?

(A) HttpSessionEvent

(B) RequestAttributeEvent

(C) ServletContextAttributeEvent

(D) ServletContextEvent

答案:A、C、D

3. 以下倾听器中,不需要在web.xml中设定的是?

(A) HttpSessionListener

(B) HttpSessionBindingListener

(C) ServletContextListener

(D) ServletAttributeListener

答案:B

4. 以下哪几个事件类型,拥有getName()与getValue()方法?

(A) HttpSessionEvent

(B) ServletRequestAttributeEvent

(C) ServletContextAttributeEvent

(D) HttpSessionBindingListener

答案:B、C、D。

5. 你有一段程序代码片段:

HttpSession session = request.getSession();

User user = new User();

session.setAttrubute("user", user);

以下何种作法,可以让你在不修改程序代码的情况下,实作统计在线人数?

(A) 实作HttpSessionBindingListener

(B) 实作HttpSessionListener

(C) 实作HttpSessionActivationListener

(D) 以上皆非

答案:B

提示:题目要求不修改原有的程序代码,所以B是唯一的可能性。

6. 在web.xml中有以下的设定:

<servlet>

<servlet-name>Some</servlet-name>

<servlet-class>cc.openhome.SomeServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet>

<servlet-name>Other</servlet-name>

<servlet-class>cc.openhome.OtherServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet>

<servlet-name>AnOther</servlet-name>

<servlet-class>cc.openhome.AnOtherServlet</servlet-class>

<load-on-startup>2</load-on-startup>

</servlet>

请问以下描述何者正确?

(A) 容器会产生两个AnotherServlet实例

(B) 容器会先初始化SomeServlet,再初始化OtherServlet

(C) 容器会先初始化AnOtherServlet,然后才是其它Servlet

(D) 容器在请求来到时,才会初始化对应的Servlet

答案:B

7. 哪个URL模式设定方式,可以符合/guest/list.view的请求?

(A) <url-pattern>*.view</view>

(B) <url-pattern>/guest/*.view</view>

(C) <url-pattern>/guest/*</view>

(D) <url-pattern>/guest/list.view</view>

答案:A、C、D

8. 如果想要请求guest目录时,自动显示欢迎档案,则以下空格可以填上什么?

<web-app …>

<welcome-file-list>

<welcome-file>______________</welcome-file>

</welcome-file-list>

</web-app>

(A) /guest/index.html

(B) /index.html

(C) default.jsp

(D) default.*

答案:C

9. 关于以下web.xml中的设定,何者描述正确?

<web-app …>

<error-page>

<exception-type>NullPointerException</exception-type>

<location>report.view</location>

</error-page>

</web-app>

(A) 发生NullPointerException时会转发report.view处理

(B) 例外型态必须指定完全符合名称(Full Qualified Name)

(C) report.view必须改为/report.view

(D) 例外类型不可以指定特定的例外类别名称

答案:B、C

10. 在过滤器设定中,哪个URL模式设定方式,在/guest/list.view的请求时会触发过滤器?

(A) <url-pattern>*.view</view>

(B) <url-pattern>/guest/*.view</view>

(C) <url-pattern>/guest/*</view>

(D) <url-pattern>/guest/list.view</view>

答案:A、C、D

提示:过滤器的<url-pattern>设定原则与Servlet相同。

l 实作题

1. 请扩充7.1.1节中的范例,不仅统计在线人数,还可以在页面上显示目前登入使用者的名称、浏览器信息、最后活动时间。

图7.14 在线使用者信息

2. 在7.1.3节中,使用HttpSessionBindingListener来实作使用者登入、注销的日志记录功能,请改用HttpSessionAttributeListener来实作这个功能。


第8章课后练习

l 选择题

1. 关于JSP的描述,哪个正确?

(A) JSP是直译式的网页,与Servlet无关

(B) JSP会先转译为.java,然后编译为.class载入容器

(C) JSP会直接由容器动态生成Servlet实例,无需转译

(D) JSP是丢到浏览器端,由浏览器进行直译

答案:B

2. 关于JSP的描述,哪个正确?

(A) 要在JSP中撰写Java程序代码,必须重新定义_jspService()

(B) 重新定义jspInit()来作JSP初次载入容器的初始化动作

(C) 重新定义jspDestroy()来作JSP从容器销毁时的结尾动作

(D) 要在JSP中撰写Java程序代码,必须重新定义service()

答案:B、C

3. 如果想要在JSP中定义方法,应该使用哪个JSP元素?

(A) <% %>

(B) <%= %>

(C) <%! %>

(D) <%-- --%>

答案:C

4. 当JSP中有撰写中文时,而执行结果出现乱码,必须检查page 指示元素的哪些属性设定是否正确?

(A) contentType

(B) language

(C) extends

(D) pageEncoding

答案:A

提示:基本上还得检查一下编辑器的预设编码与pageEncoding是否一致。

5. 哪个JSP隐含对象,转译后对应ServletContext物件?

(A) pageContext

(B) config

(C) page

(D) application

答案:D

6. 在Session范围中以名称"bean"放置了一个JavaBean属性,JavaBean上有个getMessage()方法,请问以下哪个方式呼叫getMessage()以取得讯息并显示出来?

(A) <jsp:getProperty name="bean" property="message">

(B) ${requestScope.bean.message}

(C) <%= request.getBean().getMessage() %>

(D) ${bean.message}

答案:B、D

提示:<jsp:getProperty>前必须先使用<jsp:useBean>并指定scope为request,否则<jsp:getProperty>只会在page范围中寻找属性。

7. 在Web应用程序中有以下的程序代码,执行后转发至某个JSP网页:

Map map = new HashMap();

map.put("user", "caterpillar");

map.put("role", "admin");

request.setAttribute("login", map);

以下哪个选项可以正确地使用EL取得map中的值?

(A) ${map.user}

(B) ${map["role"]}

(C) ${login.user}

(D) ${login[role]}

答案:C

提示:选项D必须改为${login["role"]}才是正确。

8. 在Web应用程序中有以下的程序代码,执行后转发至某个JSP网页:

Map map = new HashMap();

map.put("local.role", "admin");

request.setAttribute("login", map);

以下哪个选项可以正确地使用EL取得map中的值?

(A) ${map.local.role}

(B) ${login.local.role}

(C) ${map["local.role"]}

(D) ${login["local.role"]}

答案:D

9. 在Web应用程序中有以下的程序代码,执行后转发至某个JSP网页:

List names = new ArrayList();

names.add("caterpillar");

request.setAttribute("names", names);

以下哪个选项可以正确地使用EL取得List中的值?

(A) ${names.0}

(B) ${names[0]}

(C) ${names.[0]}

(D) ${names["0"]}

答案:B、D

提示:在[]指定索引值时可以用双引号,所以D也是正确的。

10. 以下何者不是EL隐含物件?

(A) param

(B) request

(C) pageContext

(D) cookie

答案:B

l 实作题

1. 先前章节实作在线留言版时,使用Servlet来实现画面的输出,请将之改为JSP,并尽量使用本章所学得的JSP元素,减少Scriptlet的使用。


第9章课后练习

l 选择题

1. 哪些JSTL标签可用来进行Java程序中if、if..else的功能?

(A) <c:if>

(B) <c:else>

(C) <c:when>

(D) <c:otherwise>

答案:A、C、D

2. 如果打算使用request对象的setCharacterEncoding()方法设定字符编码处理方式,则以下哪个JSTL标签可以让你不用使用Scriptlet?

(A) <c:if>

(B) <c:set>

(C) <c:out>

(D) <c:url>

答案:B

3. 如果taglib设定如下:

<%@taglib prefix="x" uri="http://openhome.cc/magic/x"%>

则以下何者会是使用自订标签的正确方式?

(A) <x:if>

(B) <magic:forEach>

(C) <if/>

(D) <x:if/>

答案:D

4. 在使用Tag File自订标签时,若JSP中有以下的内容:

<%@taglib  prefix="html" tagdir="/WEB-INF/tagFile" %>

以下何者描述正确?

(A) 可以<html:Errors/>的方式使用自订标签

(B) 可以<htmlErrors/>的方式使用自订标签

(C) 可以<Errors/>的方式使用自订标签

(D) taglib的定义有误,无法使用自订标签

答案:D

提示:如果是Tag File,则tagdir只有可能是/WEB-INF/tags或其子资料夹。

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("执行错误", ex);

}

}

如果test为true时,将执行本体内容并输出结果至浏览器,则空白部份应填入?

(A) invoke()

(B) invoke(new JspWriter())

(C) invoke(null)

(D) invoke(new PrintWriter())

答案:C

7. 在继承SimpleTagSupport后,doTag()的实作如下:

public void doTag() throws JspException {

try {

if(test) {

// ...

}

else {

throw new                           ;

}

} catch (java.io.IOException ex) {

throw new JspException("执行错误", ex);

}

}

如果test为false时,希望能中断JSP后续页面的处理?则空白部份应填入?

(A) SkipPageException()

(B) IOException()

(C) ServletException()

(D) Exception()

答案:A

8. 在继承TagSupport后,有个程序片段实作如下:

public int ______    ______ throws JspException {

if(test) {

// ...

return EVAL_PAGE;

}

return SKIP_PAGE;

}

如果test为false时,希望能中断JSP后续页面的处理?则空白部份应是实作哪个方法?

(E) doTag()

(F) doStartTag()

(G) doEndTag()

(H) doAfterBody()

答案:G

9. 在继承BodyTagSupport类别实作自订标签时,基本上doStartTag()方法可以传回的有效值有哪几个?

(A) SKIP_BODY

(B) EVAL_BODY_BUFFERED

(C) EVAL_BODY_INCLUDE

(D) EVAL_PAGE

答案:A、B、C

10. 在TagSupport类别的实作中,doStartTag()、doEndTag()的预设传回值是?

(A) SKIP_BODY、EVAL_PAGE

(B) EVAL_BODY_INCLUDE、EVAL_PAGE

(C) EVAL_BODY_INCLUDE、SKIP_PAGE

(D) SKIP_BODY、SKIP_PAGE

答案:A

l 实作题

1. 请开发一个自订标签,可以如下使用:

<g:eachImage var="image" dir="/avatars">

<img src="${image}"/><br>

</g:eachImage>

你可以指定某个目录,这个自订卷标将取得该目录下所有图片的路径,并设定给var所指定的变量名称,之后在标签本体中可以使用该名称(像上例使用${image}搭配<img>卷标将图片显示在浏览器上)。

2. 请将第8章课后练习的留言版程序,JSP页面中的Scriptlet使用EL、JSTL或自订标签取代,让JSP页面中不出现任何的Scriptlet。


第10章课后练习

l 选择题

1. 哪几个Web容器提供的验证方式,会出现对话框让使用者输入名称、密码?

(A) BASIC

(B) FORM

(C) DIGEST

(D) CLIENT_CERT

答案:A、C、D

2. 以下何者验证方式,有机会自行设计登入画面与注销机制?

(A) BASIC

(B) FORM

(C) DIGEST

(D) CLIENT_CERT

答案:B

3. 在使用容器窗体验证时,<form>的action属性应设置为?

(A) j_security

(B) j_check

(C) j_security_check

(D) 没有规范

答案:C

4. 假设有以下的web.xml设定档:

<security-constraint>

<web-resource-collection>

<web-resource-name>Login Required</web-resource-name>

<url-pattern>/delete.jsp</url-pattern>

<url-pattern>/delete.do</url-pattern>

<http-method>GET</http-method>

<http-method>POST</http-method>

</web-resource-collection>

<auth-constraint>

<role-name>admin</role-name>

</auth-constraint>

</security-constraint>

以下描述何者正确?

(A) 只有admin角色才可以存取/delete.jsp与/delete.do

(B) admin角色只允许使用GET与POST方法

(C) GET与POST方法只允许admin使用

(D) 其它角色可使用GET、POST以外的HTTP方法存取

答案:A、C、D

提示:admin可以使用所有的HTTP方法来存取/delete.jsp与/delete.do。

5. 如果要保证数据传输时的完整性与机密性,必须在<security_contraint>中使用哪两个标签?

(A) <user-data-constraint>

(B) <transport-guarantee>

(C) <auth-constraint>

(D) <form-login-config>

答案:A、B

6. 假设有以下的web.xml设定档:

<security-constraint>

<web-resource-collection>

<web-resource-name>Login Required</web-resource-name>

<url-pattern>/delete.jsp</url-pattern>

<url-pattern>/delete.do</url-pattern>

</web-resource-collection>

<auth-constraint/>

</security-constraint>

以下描述何者正确?

(A) 所有角色都可以存取/delete.jsp与/delete.do

(B) 存取/delete.jsp与/delete.do任何HTTP方法都是允许的

(C) 没有任何角色可以存取/delete.jsp与/delete.do

(D) 这个设定片段是错误的,无法部署

答案:C

7. 验证成功但授权失败,则会出现哪种状态码及讯息?

(A) 404 Not Found

(B) 401 Unauthorized

(C) 403 Forbidden

(D) 500 Error

答案:C

8. 哪几个Web容器提供的验证方式,会需要使用到凭证?

(A) BASIC

(B) FORM

(C) DIGEST

(D) CLIENT_CERT

答案:D

9. HttpServletRequest中的isUserInRole()可以协助达到安全的哪项要求?

(A) 验证

(B) 授权

(C) 机密性

(D) 完整性

答案:B

提示:会使用到isUserInRole()方法的URL,基本上会先透过宣告式安全的验证及授权,再透过isUserInRole()作更细部的授权控制。

10. 以下何者是<transport-guarantee>的合法设定值?

(A) NONE

(B) CONFIDENTIAL

(C) INTEGRAL

(D) SSL

答案:A、B、C

l 实作题

1. 以第9章的课后练习为基础,假设你将开发一个删除留言的功能,这个功能只能登入且具备admin角色的使用者才可以使用,若删除留言需要用到/delete.jsp与/delete.do两个URL,请使用容器宣告式窗体验证对这两个URL加以保护。


第11章课后练习

l 选择题

1. 哪些JDBC驱动程序可以有跨平台的特性?

(A) TYPE 1

(B) TYPE 2

(C) TYPE 3

(D) TYPE 4

答案:C、D

2. 哪种JDBC驱动程序是基于数据库所提供的API来进行实作?

(A) TYPE 1

(B) TYPE 2

(C) TYPE 3

(D) TYPE 4

答案:B

3. JDBC相关接口或类别,是放在哪个套件之下加以管理?

(A) java.lang

(B) javax.sql

(C) java.sql

(D) java.util

答案:C

4. 使用JDBC时,通常会需要处理哪个受检例外(Checked Exception)?

(A) RuntimeException

(B) SQLException

(C) DBException

(D) DataException

答案:B

5. 关于Connection的描述,何者正确?

(A) 可以从DriverManager上取得Connection

(B) 可以从DataSource上取得Connection

(C) 在方法结束之后Connection会自动关闭

(D) Connection是执行绪安全(Thread-safe)

答案:A、B

提示:Connection不是执行绪安全的,不可以在多执行绪环境下共享Connection,以免发生数据错乱的问题。

6. 使用Statement来执行SELECT等查询用的SQL指令时,应使用下列哪个方法?

(A) executeSQL()

(B) executeQuery()

(C) executeUpdate()

(D) executeFind()

答案:B

7. 哪个对象正确使用下,可以适当地避免SQL Injection的问题?

(A) Statement

(B) ResultSet

(C) PreparedStatement

(D) Command

答案:B

8. 取得Connection之后,如何取得Statement对象?

(A) conn.createStatement()

(B) conn.buildStatement()

(C) conn.getStatement()

(D) conn.createSQLStatement()

答案:A

9. 以下描述何者有误?

(A) 使用Statement一定会发生SQL Injection

(B) 使用PreparedStatement就不会发生SQL Injection

(C) 不使用Connection时必须加以关闭

(D) ResultSet代表查询的结果集合

答案:A、B

提示:只要有正确的使用观念,即使用Statement也不一定会发生SQL Injection。如果使用不正确,使用PreparedStatement也有可能发生SQL Injection。

10. 使用Statement的executeQuery()方法,会传回哪个型态?

(A) int

(B) boolean

(C) ResultSet

(D) Table

答案:C

l 实作题

1. 以第9章的课后练习为基础,将先前的留言版程序,改用数据库储存留言版讯息,并新增「删除留言」功能。

2. 请继续扩充留言版程序,使之具备响应留言、删除留言、分页显示等功能。


第12章课后练习

l 选择题

1. 当继承HttpServlet后,重新定义doGet()方法,以在GET请求来到时执行,这实际上是哪个模式的实现结果?

(A) Factory Method模式

(B) Template Method模式

(C) Command模式

(D) Proxy模式

答案:B

2. 在web.xml中定义使用者登入验证过滤器、效能过滤器,就可以有拦截请求,这是哪个模式的实现?

(A) Business Delegate模式

(B) Interceptor Filter模式

(C) Service Locator模式

(D) Front Controller模式

答案:B

3. 以下哪几个属于Java EE模式?

(A) Business Delegate模式

(B) Interceptor Filter模式

(C) Service Locator模式

(D) Front Controller模式

答案:A、B、C、D

4. 想要降低前端所采用技术及后端服务对象的耦合度,例如为免日后前端从Servlet/JSP改用JSF时必须对后端对象作出修改,则适合采用哪个模式?

(A) Business Delegate模式

(B) Interceptor Filter模式

(C) Service Locator模式

(D) Front Controller模式

答案:A

5. 在分布式的应用当中,你希望对某个对象隐藏取得远程服务对象的细节(也许是透过RMI、JNDI等),则应采用哪个模式?

(A) Business Delegate模式

(B) Interceptor Filter模式

(C) Service Locator模式

(D) Front Controller模式

答案:C

,

第1章课后练习

l 选择题

1. 以下何者适合使用GET请求来发送?

(A) 使用者名称、密码

(B) 检视论譠页面

(C) 信用卡资料

(D) 查询数据的分页

答案:B、D

提示:敏感性数据不应使用GET来发送。论譠页面、数据分页可以使用GET,便于使用者设定为书签。

2. 以下何者应该使用POST请求来发送?

(A) 使用者名称、密码

(B) 档案上传

(C) 搜寻引擎的结果画面

(D) BLOG文件

答案:A、B、D

提示:敏感性数据、大量数据不应使用GET来发送。搜寻引擎结果画面可以使用GET,便于使用者设定为书签。

3. HTTP哪个请求方式,请求参数会出现在网址列上?

(A) GET

(B) POST

答:A

4. 以下何者适合使用GET请求来发送?

(A) 检视静态页面

(B) 查询商品数据

(C) 新增商品资料

(D) 删除商品数据

答案:A、B

提示:这题在考等幂操作,不改变服务器状态的查询应使用GET。

5. 以下何者应该使用POST请求来发送?

(A) 查询商品数据

(B) 新增商品资料

(C) 更新商品数据

(D) 删除商品数据

答案:B、C、D

提示:这题在考非等幂操作,会改变服务器状态的查询应使用POST。

6. 以下何者是属于客户端执行的程序?

(A) JSP

(B) JavaScript

(C) Servlet

(D) Applet

答案:B、D

7. Servlet/JSP主要是属于哪个Java平台的规范之中?

(A) Java SE

(B) Java ME

(C) Java EE

答:C

8. Servlet/JSP必须基于哪一类型的容器才能提供服务?

(A) Applet容器

(B) 应用程序客户端容器

(C) Web容器

(D) EJB容器

答:C

9. Web容器在收到浏览器请求时,会如何处理请求?

(A) 使用单一执行绪处理所有请求

(B) 一个请求就建立一个执行绪来处理请求

(C) 一个请求就建立一个行程来处理请求

(D) 一个请求就执行一个容器来处理请求

答:B

10. Java EE中各技术标准最后将由什么文件明订规范?

(A) JCP

(B) JSR

(C) JDK

答:B

提示:JCP是组织名称。JDK是Java开发工具箱名称。


第2章课后练习

l 选择题

1. 若要针对HTTP请求撰写Servlet类别,以下何者是正确的作法?

(A) 实作Servlet界面

(B) 继承GenericServlet

(C) 继承HttpServlet

(D) 直接定义一个结尾名称为Servlet的类别

答案:C

2. 续上题,如何针对HTTP的GET请求进行处理与响应?

(A) 重新定义service()方法

(B) 重新定义doGet()方法

(C) 定义一个方法名称为doService()

(D) 定义一个方法名称为get()

答案:B

提示:不建议也不应重新定义HttpServlet所继承下来的service()方法。

3. HttpServlet是定义在哪个套件之中?

(A) javax.servlet

(B) javax.servlet.http

(C) java.http

(D) javax.http

答案:C

提示:与Servlet定义相关的类别或接口都位于javax.servlet套件之中,像是Servlet、GenericServlet、ServletRequest、ServletResponse等。与HTTP定义相关的类别或接口都位于javax.servlet.http套件之中,像是HttpServlet、HttpServletRequest、HttpServletResponse等。

4. 你在web.xml中定义了以下的内容:

<servlet>

<servlet-name>Goodbye</servlet-name>

<servlet-class>cc.openhome.LogutServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>GoodBye</servlet-name>

<url-pattern>/goodbye</url-pattern>

</servlet-mapping>

哪个URL可以正确的要求Servlet进行请求处理?

(A) /GoodBye

(B) /goodbye.do

(C) /LoguotServlet

(D) /goodbye

答案:D

5. 在Web容器中,以下哪两个类别的实例分别代表HTTP请求与响应对象?

(A) HttpRequest

(B) HttpServletRequest

(C) HttpServletResponse

(D) HttpPrintWriter

答案:B、C

6. 在Web应用程序中,何者负责将HTTP请求转换为HttpServletRequest物件?

(A) Servlet物件

(B) HTTP服务器

(C) Web容器

(D) JSP网页

答案:C

7. 在Web应用程序的档案与目录结构中,web.xml是直接放置在哪个目录之中?

(A) WEB-INF目录

(B) conf目录

(C) lib目录

(D) classes目录

答案:A

8. 你在web.xml中定义了以下的内容:

<servlet>

<servlet-name>HelloServlet</servlet-name>

<java-class>cc.openhome.HelloServlet</java-class>

</servlet>

<servlet-mapping>

<mapping-name>HelloServlet</mapping-name>

<url-pattern>/hello</url-pattern>

</servlet-mapping>

这个web.xml中的定义有哪些错误?

(A) <url-pattern>标签中的设定一定要用.do作结尾

(B) <mapping-name>标签应改为<servlet-name>,结尾标签名称也要修改

(C) <java-name>标签应改为<servlet-class>,结尾标签名称也要修改

(D) <servlet>标签应改为<servlet-definition>,结尾标签名称也要修改

答案:B、C

提示:<url-pattern>可以无需.do结尾,也可以用万用字符(wildcard),例如*.do将会让所有以.do结尾的请求由该Servlet进行处理。

9. 在MVC架构中,谁负责通知应用程序客户端,应用程序本身有状态改变?

(A) 模型(Model)

(B) 视图(View)

(C) 控制器(Controller)

答案:A

10. MVC与Model 2架构最大的差别在于?

(A) Model 2架构的视图是由HTML组成

(B) Model 2架构中的模型无法通知视图状态已更新

(C) MVC架构是基于请求/响应模型

(D) MVC架构只能用于单机应用程序

答案:B

提示:Model 2架构中呈现视图的技术并没有限制。MVC架构也可以应用于3-tier的网络架构中,其中模型通知视图时,可以透过Socket联机来进行。

l 实作题

1. 讲师提示:这个练习在让学生动手实作HttpServlet的继承、web.xml的定义,并能够自行查询在线API文件,了解HttpServletRequest有哪些方法可以利用。

2. 提示:这个练习在让学生动作撰写窗体(学生必须自行学习基本的HTML),了解GET与POST如何在Servlet中进行处理,学生必须重新定义doPost()方法,并了解如何在Servlet中撰写判断分支来呈现不同条件下的结果画面。


第3章课后练习

课后练习

l 选择题

1. 以下的空格应该填入哪个方法?

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.____________;

out.println("<html>");

...

(A) getPrintWriter()

(B) getWriter()

(C) getBufferedWriter()

(D) getOutputWriter()

答案:B

2. 请问以下的Servlet程序片段输出结果为何?

out.println("第一个Servlet程序");

out.flush();

request.getRequestDispatcher("message.jsp")

.forward(request,response);

out.println("Hello!World!");

(A) 显示"第一个Servlet程序"后转发message.jsp

(B) 显示"第一个Servlet程序"与"Hello!World!"

(C) 直接转发给message.jsp进行响应

(D) 丢出IllegalStateException

答案:A

提示:在flush()之后响应已确认,此时再forward()就会发生IllegalStateException。

3. 你将secret.jsp档案放在WEB-INF目录中,哪个方式或程序片段可以正确让secret.jsp进行响应?

(A) 使用浏览器请求/WEB-INF/secret.jsp

(B) request.getRequestDispatcher("/WEB-INF/secret.jsp")并进行forward()

(C) 使用response.sendRedirect("/WEB-INF/secret.jsp")

(D) 使用response.sendError("/WEB-INF/secret.jsp")

答案:B

4. 如果想知道使用者所使用的浏览器版本等相关讯息,可以执行哪一段程序代码:

(A) request.getHeaderParameter("User-Agent")

(B) request.getParameter("User-Agent")

(C) request.getHeader("User-Agent")

(D) request.getRequestHeader("User-Agent")

答案:C

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("password");

(B) request.getParameters("password")[0];

(C) request.getParameterValues("password")[0];

(D) request.getRequestParameter("password");

答案:A、C

提示:getParameterValues()会用字符串数组传回指定的请求参数值,如果请求参数只有一个值,则透过指定索引值0也可取得该值。

7. 下面这个程序代码片段会输出什么结果?

PrintWriter writer = response.getWriter();

writer.println("第一个Servlet程序");

OutputStream stream = response.getOutputStream();

stream.println("第一个Servlet程序".getBytes());

(A) 浏览器会看到两段"第一个Servlet程序"的文字

(B) 浏览器会看到一段"第一个Servlet程序"的文字

(C) 丢出IllegalStateException

(D) 由于没有正确地设定内容类型(content-type),浏览器会提示另存新档

答案:C

提示:同一个请求周期中,HttpServletResponse的getWriter()与getOutputStream()只能择一使用,否则会丢出IllegalStateException。

8. 如果要设置响应的内容类型标头,哪几个选项是正确的作法?

(A) response.setHeader("Content-Type", "text/html");

(B) response.setContentType("text/html");

(C) response.addHeader("Content-Type", "text/html");

(D) response.setContentHeader("text/html");

答案:A、B、C

9. 下面哪个选项,可以正确地追加自订标头"MyHead"的值?

(A) response.setHeader("MyHeader", "Value2");

(B) response.appendHeader("MyHeader", "Value2");

(C) response.addHeader("MyHeader", "Value2");

(D) response.insertHeader("MyHeader", "Value2");

答案:C

10. 哪几个方法是定义在HttpServletRequest中,而非由ServletRequet中继承而来?

(A) getMethod()

(B) getHeader()

(C) getParameter()

(D) getCookies()

答案:A、B、C

提示:与HTTP请求有关的方法,是定义在HttpServletRequest中,与通用请求有关的,是定义在ServletRequest中,例如getParameter()。

l 实作题:

1. 请实作一个Web应用程序,可以将使用者所发送的name请求参数值画在一张图片上(参考下图,底图可任选)。

提示:可在搜寻引擎下关键词「动态产生图片」寻找解答。参考http://caterpillar.onlyfun.net/Gossip/JSPServlet/DynamicImage.htm,画图的部份不难,主要让学生练习如何取得请求参数、如何使用ServletOutputStream以及利用搜寻引擎寻找解答的能力。

图3.20 根据使用者输入动态产生图片内容

2. 请实作一个Web应用程序,可动态产生使用者登入密码(参考下图,仅需先确作出动态产生密码图片的功能即可,送出窗体后的密码验证功能还不用实现)。

提示:主要是上一题练习的延伸,随机产生四个数字,再画到图片上。这个练习可结合Session属性的运用,就可实作出登入的部份,在第5章讲到Session对象时会再要求实作登入的机制。

图3.21 动态产生登入密码


第4章课后练习

课后练习

l 选择题

1. 如果是整个应用程序会共享的数据,则适合存放在哪个对象之中成为属性?

(A) ServletConfig

(B) ServletContext

(C) ServletRequest

(D) Session

答案:B

2. 如果要取得ServletContext初始参数,则可以执行哪个方法?

(A) getContextParameter()

(B) getParameter()

(C) getInitParameter()

(D) getAttribute()

答案:C

3. 假设一段程序代码如下,其中PARAM为设定于web.xml中的初始参数:

public class SomeServlet extends HttpServlet {

private String param;

public SomeServlet() {

param = getInitParameter("PARAM");

}

}

以下何者正确?

(A) param被设定为web.xml中的初始参数值

(B) 无法通过编译

(C) 应该改用getServletParameter()方法

(D) 发生NullPointerException

答案:D

提示:getInitParameter()也是透过ServletConfig来取得初始参数,在建构式执行时,由于尚未进行Servlet初始化,ServletConfig尚未经由init()方法传入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) <init-param>

<param-name>PARAM</param-name>

<param-value>VALUE</param-value>

</init-param>

(B) <context-param>

<param-name>PARAM</param-name>

<param-value>VALUE</param-value>

</context-param>

(C) <init-param>

<param-name>PARAM1</param-name>

<param-value>VALUE1</param-value>

<param-name>PARAM1</param-name>

<param-value>VALUE1</param-value>

</init-param>

(D) <context-param>

<param-name>PARAM1</param-name>

<param-value>VALUE1</param-value>

</context-param>

<context-param>

<param-name>PARAM2</param-name>

<param-value>VALUE2</param-value>

</context-param>

答案:B、D

6. 若要读取WEB-INF/data.txt档案的数据,以下哪个是正确的作法?

(A) FileInputStream input =

new FileInputStream("/WEB-INF/data.txt");

(B) FileInputStream input = new FileInputStream(

new File("/WEB-INF/data.txt"));

(C) InputStream input =

getResourceAsStream("/WEB-INF/data.txt");

(D) FileInputStream input =

getResourceAsStream("/WEB-INF/data.txt");

答案:C

7. ServletContext定义与属性相关的方法是哪三个?

(A) getAttribute();

(B) setAttribute();

(C) deleteAttribute()

(D) removeAttribute();

答案:A、B、D

8. 若web.xml中有以下的设定:

<servlet>

<servlet-name>Some</servlet-name>

<servlet-class>cc.openhome.SomeServlet</servlet-class>

<init-param>

  全套毕业设计论文现成成品资料请咨询微信号:biyezuopin QQ:2922748026     返回首页 如转载请注明来源于www.biyezuopin.vip  

                 

打印本页 | 关闭窗口
  下一篇文章:Java Web应用开发复习题
本类最新文章
台式数控等离子切割机机械结构设计 台式数控等离子切割机机械结构设计 台式数控等离子切割机机械结构设计
基于PLC的罐装加工过程为全自动 基于Python电影推荐系统设计 基于西门子S7-200PLC四层
| 关于我们 | 友情链接 | 毕业设计招聘 |

Email:biyeshejiba@163.com 微信号:biyezuopin QQ:2922748026  
本站毕业设计毕业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.如有侵犯您的版权有损您的利益,请联系我们会立即改正或删除有关内容!