强化练习Servlet文档格式.docx
《强化练习Servlet文档格式.docx》由会员分享,可在线阅读,更多相关《强化练习Servlet文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
Bservice()
Cdestroy()
Dcreate()
D
6、以下是web.xml文档的一部分:
<
servlet>
servlet-name>
Display<
/servlet-name>
servlet-class>
myPackage.DisplayServlet<
/servlet-class>
load-on-startup>
2<
/load-on-startup>
/servlet>
Search<
jsp-file>
/search/search.jsp<
/jsp-file>
1<
请问以上web.xml文档中的设置是指示服务器首先装载和初始化哪个servlet?
ADisplay
BDisplayServlet
Csearch.jsp
D由search.jsp生成的servlet
7、以下有关Servlet常用的请求头的含义说法错误的是:
AAccept-Language头指出客户端倾向的语言。
如en。
BContent-Length头以字节为单位给出POST数据的长度。
CHost表明了主机和端口。
DUser-Agent头表明了发出请求的客户代理的信息。
8、以下关于JavaServletAPI说法错误的是:
AJavaServletAPI是一组Java类,它定义了Web客户端和WebServlet之间的标准接口。
BJavaServletAP由两个包组成:
javax.servlet
和
javax.servlet.http。
Cjavax.servlet.http包对http协议提供了特别的支持。
Djavax.servlet包提供了对除http协议外其他协议的支持。
9、下列有ServletRequest和ServletResponse的描述错误的是?
AServlet引擎使用ServletRequest来向Servlet提供有关客户请求的信息,使用ServletResponse向客户端传送经过MIME编码的数据。
BHttpServletRequest类和HttpServletResponse类能够提供进一步的与协议相关的数据。
Servlet的Service方法的参数是ServletRequest对象或ServletResponse
对象中的一个。
C发送文本数据时,使用getWriter方法返回PrintWriter对象;
发送二进制数据时,使用getOutputStream方法返回ServletOutputStream对象。
D在调用getWriter或getOutputStream方法之前必须调用setContentType方法。
10、有关Cookie下列说确的是?
(两个答案)
ACookie是将会话数据保存在客户端来维护会话状态的一种方式。
它是服务器发送给浏览器的体积很小的纯文本信息
B获得cookie后,用户以后再访问同一个Web服务器时,浏览器会把cookie原样发送给服务器。
CCookie是服务器端状态管理机制
DCookie是相对安全的一种状态管理机制
AB
11、下图中,两个客户端client1和Client2访问同一个ServletA。
ServletA为两个不同的客户端创建了两个不同的线程Thread1和Thread2。
以下关于它们的各个对象说确的是:
A因为访问的是同一个Servlet,所以Thread1和Thread2共享一个ServletConfig对象
B因为访问的是同一个Servlet,所以Thread
1和Thread
2共享一个ServletContext对象
CServletRequest和ServletResponse对象是针对Servlet实例的。
所以Thread1和Thread2各自有各自的ServletRequest和ServletResponse对象。
D对于HttpSession对象,因为是同一个Servlet,因此它们是相同的。
ABC
12、有关过滤器init()方法错误的是:
A每次调用过滤器时都会执行init方法。
Binit方法可以访问FilterConfig对象。
FilterConfig对象提供了对servlet环境及web.xml文件中指派的过滤器名的访问。
C利用init将FilterConfig对象存放在一个字段中,以便doFilter方法能够访问servlet环境或过滤器名。
DFilterConfig对象具有一个getInitParameter方法,它能够访问部署描述符文件(web.xml)中分配的过滤器的初始化参数。
A
13、当读取多值参数值时通常使用()方法,该方法返回一个()
A.getValues()
B.getParameterVlausers()
C.getAtrribute()
DgetParameterAtrributes()
A.枚举类型
B.字符串
C.字符串数组
D.其他
BC
14、Servlet程序中存储信息的几种不同的围:
其中仅在一次请求围有效的消息是存放在()围的信息;
在同一次会话均能访问的信息是存放在()围的信息;
在整个应用运行期间都有效的消息是存放在()围的信息,这三种访问围依次()
A.ServletContext
B.requeest
C.seesion
D.增大
E.减小
BCAD
15、AJavaservletcanbedeclaredwiththetypeofcontentitwillproduce,suchasimage/gifortext/html,byusingacalltowhichofthefollowingmethodsofHttpServletResponse()
AencodeURL
BsetContentType
CresetBuffer
DaddCookie
16、有两个Servlet:
servlet1和servlet2,servlet1把HttpServletRequest和HttpServletResponse成功发送到servlet2,在servlet1中有如下代码:
IntegerI=newInteger(10);
request.setAttribute(“x”,I);
以下是在servlet2中对属性x操作的代码,正确的是():
A.Integery=request.getAttribute(“x”);
B.Objecty=request.getAttribute(“x”);
C.inty=((Integer)request.getAttribute(“x”)).intValue();
D.Integery=(Integer)request.getAttribute(x);
E.request.removeAttribute(“x”);
BCD
17、对于以下描述,正确的是:
A.定义了默认的会话超时时长。
时长为30秒。
B.可以使用HttpSession接口的getMaxInactiveInterval()方法把该值取出来。
C.定义了默认的会话超时时长。
时长为30小时。
D.可以使用Session类的getMaxInactiveInterval()方法把该值取出来。
18、对于自己编写的Servlet1,以下对Servlet1的定义正确的是:
()
A.classServlet1implementsjavax.servlet.Servlet
B.classServlet1extendsjavax.servlet.GenericServlet
C.classServlet1extendsjavax.servlet.http.HttpServlet
D.classServlet1extendsjavax.servlet.ServletRequest
答案:
C
19、假如编译Servlet要具备的环境都已经建立好。
现在用完全正确的命令编译该文件,对于以下述正确的是:
A.编译该文件时会提示缺少doGet()或者doPost()方法,编译不能够成功通过
B.编译后,把Servlet1.class放在正确位置,在浏览器中查看该Servlet1,会看到输出文字:
hello!
。
C.编译后,把Servlet1.class放在正确位置,在浏览器中查看该Servlet1,却看不到任何输出的文字。
D.编译后,把Servlet1.class放在正确位置,在浏览器中查看该Servlet1,却看到产生运行时错误的出错信息。
20、my.html把请求传递到Servlet:
myservlet。
My.html文件如下:
sample1
sample2
在myservlet中,使用哪个方法,可以查看到用户在浏览my.html时选择的所有值。
A.getParameterValues方法
B.getParameter方法
C.getQueryString方法
D.getAttribute方法
21、在J2EE中,对于HttpServlet类的描述,正确的是()。
(选择三项
A.我们自己编写的Servlet继承了HttpServlet类,一般只需要覆盖doPost或者doGet方法,不必覆盖service()方法。
因为一个service()方法是空的
B.HttpServlet类扩展了GenericServlet类,实现了GenericServlet类的抽象方法service()
C.HttpServlet类有两个service()方法
D.我们自己编写的Servlet继承了HttpServlet类,一般只需要覆盖doPost或者doGet方法,不必覆盖service()方法。
因为一个service()方法会调用doPost或者doGet方法
ABD
22、在J2EE中,ServletResponse的()方法可以返回在应答中写入二进制数据的对象,()方法可以返回应答中发送字符文本的对象()
A.getOutputStream()和getWrite()方法
B.getWrite()和getOutputStream()方法
C.getInputStream()和getPrint()方法
D.getStream()和getPrint()方法
23、Servlet程序的入口点是:
(A)
A.init()
B.main()
C.service()
D.doGet()
24、在一个Filter中,处理filter业务的是()方法。
A.dealFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)
B.dealFilter(ServletRequestrequest,ServletResponseresponse)
C.doFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)
D.doFilter(ServletRequestrequest,ServletResponseresponse)
25、下面对servlet中重定向说法描述错误的是(D)
A.使用的是HttpServletResponse接口的sendRedirect()方法
B.源组件的响应结果不会发送给客户端
C.
sendRedirect()方法后的代码仍会执行
D.源组件和目标组件共享ServletRequest对象
26、所有的servlet过滤器类都必须实现()接口。
A.
javax.servlet.Filter
B.
javax.servlet.ServletConfig
C.
javax.servlet.ServletContext
D.
javax.servlet.Servlet
27、forward和sendredirect都是用来做页面跳转的,描述错误的是?
A.forward之后可以使用原来的request对象,而且效率更高。
B.sendredirect之后不可以使用原来的request对象,而且效率低。
C.forward地址栏不变化,只能在web应用程序的页面间跳转。
D.forward地址栏变化,可以跳转到任何页面和机器。
28、在运行Web项目时,IE提示“404错误”,可能的原因包括哪些?
A.未启动Tomcat服务
B.未部署Web项目
C.URL中的上下文路径书写错误
D.URL中的文件名称书写错误
E.浏览器版本不符合Servlet要求
F.网络连接不正常
29、以下HTTP响应状态码的含义描述正确的是?
A.200OK表示请求成功
B.400不良请求表示服务器未发现与请求URI匹配的容。
C.404未发现表示由于语法错误而导致服务器无法理解请求信息//c与b的解释相反。
D.500部服务器错误,无法处理请求
Ⅱ.填空题
1.Servlet通常是通过_________协议进行工作的,Servlet运行时需要_________的支持。
2.ServletAPI所位于的包是:
_________和_________,因此在编写Servlet时这两个包都需要导入。
3.Servlet的主要成员方法包括init()、service()、dotGet()、doPost()和destroy()等其中_________方法执行一些Servlet的初始化操作,_________方法用于在卸载Servlet时执行一些功能,如果没有特殊的初始化和结束操作要做,这两个方法可以不重写。
大多数情况下,自己只需要重写服务类方法即可,服务类方法包括_________、_________和_________等,其中_________方法一般不推荐重写。
4.Servlet编写完毕之后,如果要作为Web应用的组成部分,必须在Web应用的配置文件_________(位于_________子目录下)中进行配置。
Ⅲ.简答题
1.简述Servlet的生命周期大概可以分为几个阶段
(1)、初始化阶段:
当支持Servlet运行的Web容器解说到客户端请求时,会现判断用户所请求的Servlet对象是否存在,如果不存在,则需要加载Servlet类,创建Servlet对象并实例化,然后调用Servlet的init()方法进行初始化。
(2)、运行阶段:
容器创建requeset和response对象,并且创建一个线程,调用Servlet对象的service()方法,service()方法在根据客户端请求方式间接调用doGet()方法或者doPost()方法,service()方法运行结束后产生响应,容器将响应发回客户端。
(3)、销毁阶段:
当Web应用别卸载或是服务器关闭的时候,容器会销毁为本次客户端请求创建request和response对象以及相应的线程,此时会调用destory()方法释放资源。
需要注意的是:
加载Servlet类,创建对象、调用初始化方法init()和销毁方法destory()在Servlet的整个生命周期都只有一次。
2.Servlet的整个生命周期中会有一些方法被服务器自动调用,其中的主要方法有:
Init()方法,用户初始化
destory()方法,用于释放资源
service()方法,服务类方法,对用户的请求进行处理,并对用户进行响应,几乎所有的处理功能都在这里完成。
Service()方法通常会激活doGet()或doPost()方法
3.客户端提交请求的方式有哪些?
什么情况下客户端提交请求的方式是GET或POST?
描述GET和POST方法的不同点?
4.描述实现WEB资源跳转的方式?
并比较异同点?
5.第一个Servlet1文件,读取两个请求参数first和second,将其转换为int值后相加,和存放在请求围,然后把请求转发第二个Servlet2.。
第二个Servlet2文件(url为output),向客户输出Servlet1计算的结果。
根据注释补充下列代码。
publicclassServlet1extendsHttpServlet{
publicvoidservice(ServletRequestrequest,ServletResponseresponse)
throwsServletException,IOException{
//读取两个请求参数,并将其转换为int值
intfirst=________________________________________________________
(Integer.valueOf(request.getParameter(“first”)).intValue();
3分)
intsecond=________________________________________________________
Integer.valueOf(request.getParameter(“second”)).intValue();
分)
//将两个数字相加
intsum=_______________________
first+second;
//在request对象中添加sum属性
________________________________________________________
request.setAttribute(“sum”,String.valueOf(sum));
//把请求转发给Servlet2
ServletContextcontext=getServletContext();
RequestDispatcherdispatcher=context.getRequestDispatcher(“/output”);
_______________________
dispatcher.forward(request,response);
}
}
publicclassServlet2extendsHttpServlet{
//读取请求围Servlet1计算出的和
Stringsum=_______________________
(String)request.getAttribute(“sum”);
//向客户端输出和
PrintWriterout=_______________________
response.getWriter();
out.print(“thesumis“+sum);
6.编写一个Servlet,显示客户端的IP地址。
补充下列代码
importjavax.servlet.*;
importjavax.servlet._[1]_.*;
importjava.io.*;
publicclassGetIPextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,
HttpServletResponseresponse)
throwsServletException,IOException{
_[2]_.setContentType("
text/html"
);
PrintWriterout=_[3]_.getWriter();
out.println("
html>
"
head>
title>
Servlet<
/title>
/head>
body>
YourIPAddressis"
+_[4]_.getRemoteAddr()+"
\n"
/body>