ServletJSP课后习题解答.docx
《ServletJSP课后习题解答.docx》由会员分享,可在线阅读,更多相关《ServletJSP课后习题解答.docx(50页珍藏版)》请在冰豆网上搜索。
ServletJSP课后习题解答
第1章课后练习
●选择题
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)JavaSE
(B)JavaME
(C)JavaEE
答:
C
8.Servlet/JSP必须基于哪一类型的容器才能提供服务?
(A)Applet容器
(B)应用程序客户端容器
(C)Web容器
(D)EJB容器
答:
C
9.Web容器在收到浏览器请求时,会如何处理请求?
(A)使用单一执行绪处理所有请求
(B)一个请求就建立一个执行绪来处理请求
(C)一个请求就建立一个行程来处理请求
(D)一个请求就执行一个容器来处理请求
答:
B
10.JavaEE中各技术标准最后将由什么文件明订规范?
(A)JCP
(B)JSR
(C)JDK
答:
B
提示:
JCP是组织名称。
JDK是Java开发工具箱名称。
第2章课后练习
●选择题
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
答案:
B
提示:
与Servlet定义相关的类别或接口都位于javax.servlet套件之中,像是Servlet、GenericServlet、ServletRequest、ServletResponse等。
与HTTP定义相关的类别或接口都位于javax.servlet.http套件之中,像是HttpServlet、HttpServletRequest、HttpServletResponse等。
4.你在web.xml中定义了以下的内容:
Goodbye
cc.openhome.LogutServlet
GoodBye
/goodbye
哪个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中定义了以下的内容:
HelloServlet
cc.openhome.HelloServlet
HelloServlet
/hello
这个web.xml中的定义有哪些错误?
(A)标签中的设定一定要用.do作结尾
(B)标签应改为,结尾标签名称也要修改
(C)标签应改为,结尾标签名称也要修改
(D)标签应改为,结尾标签名称也要修改
答案:
B、C
提示:
可以无需.do结尾,也可以用万用字符(wildcard),例如*.do将会让所有以.do结尾的请求由该Servlet进行处理。
9.在MVC架构中,谁负责通知应用程序客户端,应用程序本身有状态改变?
(A)模型(Model)
(B)视图(View)
(C)控制器(Controller)
答案:
A
10.MVC与Model2架构最大的差别在于?
(A)Model2架构的视图是由HTML组成
(B)Model2架构中的模型无法通知视图状态已更新
(C)MVC架构是基于请求/响应模型
(D)MVC架构只能用于单机应用程序
答案:
B
提示:
Model2架构中呈现视图的技术并没有限制。
MVC架构也可以应用于3-tier的网络架构中,其中模型通知视图时,可以透过Socket联机来进行。
●实作题
1.讲师提示:
这个练习在让学生动手实作HttpServlet的继承、web.xml的定义,并能够自行查询在线API文件,了解HttpServletRequest有哪些方法可以利用。
2.提示:
这个练习在让学生动作撰写窗体(学生必须自行学习基本的HTML),了解GET与POST如何在Servlet中进行处理,学生必须重新定义doPost()方法,并了解如何在Servlet中撰写判断分支来呈现不同条件下的结果画面。
第3章课后练习
课后练习
●选择题
1.以下的空格应该填入哪个方法?
response.setContentType("text/html;charset=UTF-8");
PrintWriterout=response.____________;
out.println("");
...
(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)ResponseStreamout=response.getResponseStream();
(B)ResponseStreamout=response.getStream();
(C)ResponseStreamout=response.getOutputStream();
(D)ServletOutputStreamout=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.下面这个程序代码片段会输出什么结果?
PrintWriterwriter=response.getWriter();
writer.println("第一个Servlet程序");
OutputStreamstream=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()。
●实作题:
1.请实作一个Web应用程序,可以将使用者所发送的name请求参数值画在一张图片上(参考下图,底图可任选)。
提示:
可在搜寻引擎下关键词「动态产生图片」寻找解答。
参考
图3.20根据使用者输入动态产生图片内容
2.请实作一个Web应用程序,可动态产生使用者登入密码(参考下图,仅需先确作出动态产生密码图片的功能即可,送出窗体后的密码验证功能还不用实现)。
提示:
主要是上一题练习的延伸,随机产生四个数字,再画到图片上。
这个练习可结合Session属性的运用,就可实作出登入的部份,在第5章讲到Session对象时会再要求实作登入的机制。
图3.21动态产生登入密码
第4章课后练习
课后练习
●选择题
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中的初始参数:
publicclassSomeServletextendsHttpServlet{
privateStringparam;
publicSomeServlet(){
param=getInitParameter("PARAM");
}
…
}
以下何者正确?
(A)param被设定为web.xml中的初始参数值
(B)无法通过编译
(C)应该改用getServletParameter()方法
(D)发生NullPointerException
答案:
D
提示:
getInitParameter()也是透过ServletConfig来取得初始参数,在建构式执行时,由于尚未进行Servlet初始化,ServletConfig尚未经由init()方法传入Servlet之中,所以建构式中尝试取得初始参数时就会发生NullPointerException。
4.继承HttpServlet之后,若要进行Servlet初始化,重新定义哪个方法才是正确的作法?
(A)publicvoidinit(ServletConfigconfig)throwsServletException;
(B)publicvoidinit()throwsServletException
(C)publicStringgetInitParameter(String name)
(D)publicEnumerationgetInitParameterNames()
答案:
B
5.关于ServletContext初始参数,以下哪两项是web.xml中正确的设定?
(A)
PARAM
VALUE
(B)
PARAM
VALUE
(C)
PARAM1
VALUE1
PARAM1
VALUE1
(D)
PARAM1
VALUE1
PARAM2
VALUE2
答案:
B、D
6.若要读取WEB-INF/data.txt档案的数据,以下哪个是正确的作法?
(A)FileInputStreaminput=
newFileInputStream("/WEB-INF/data.txt");
(B)FileInputStreaminput=newFileInputStream(
newFile("/WEB-INF/data.txt"));
(C)InputStreaminput=
getResourceAsStream("/WEB-INF/data.txt");
(D)FileInputStreaminput=
getResourceAsStream("/WEB-INF/data.txt");
答案:
C
7.ServletContext定义与属性相关的方法是哪三个?
(A)getAttribute();
(B)setAttribute();
(C)deleteAttribute()
(D)removeAttribute();
答案:
A、B、D
8.若web.xml中有以下的设定:
Some
cc.openhome.SomeServlet
param1
1
param2
2
而某个Servlet撰写了以下的程序代码:
publicvoidinit()throwsServletException{
super.init();
intparam1=getInitParameter("param1");
intparam2=getInitParameter("param2");
}
以下何者描述正确?
(A)第二对、可以直接撰写在第一个之中
(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中有以下的设定:
…
cc.openhome.SomeListener
...
以下何者正确?
(A)SomeListener类别要实作ServletContextListener接口
(B)每生成一个Servlet实例就会呼叫ServletContextListener的init()方法
(C)Web应用程序初始化之后,会呼叫ServletContextListener的contextInitialized()方法
(D)不需要这个标签
答案:
A、C
●实作题
1.请使用目前所学得的Servlet相关技巧,实作一个在线留言版程序,其中必须包括以下的功能:
(1).有个档案会储存留言,应用程序初始时,必须从该档案中加载留言记录。
(2).「观看留言」功能,每笔留言中包括了留言者的头像、名称与留言讯息。
下图是个简单的示范。
图4.8观看留言
(3).动态「留言窗体」功能,新增留言时使用的窗体。