码迷,mamicode.com
首页 > 其他好文 > 详细

黑马day05 response&request小测试有难度哦!

时间:2015-06-22 16:24:09      阅读:2636      评论:0      收藏:0      [点我收藏+]

标签:

第5天:javaweb之request/respone

 

考点:requestresponse生命周期。以及两个对象的常用API(转发与重定向)

1.关于request和response下列说法中不正确的是(B)(难度C

A、javaweb开发是基于HTTP协议进行的,javaweb中使用request代表请求对象,response代表响应对象

B、request对象代表请求,response对象代表响应,这两个对象都是由浏览器创建后发送给服务器的

C、HTTP协议只规定了浏览器和服务器之间如何通信,而request和response对象是由javaee规范规定的、由javaweb容器负责创建的。

D、HTTP协议是javaweb开发的基石,如response中提供的请求重定向的方法和request中提供的转发和包含方法就是基于HTTP协议进行的

 

答案:BD

考点:这个没有看懂考点,都没有乱码。不知道如何修改

2.服务器使用如下哪条语句发送数据有可能有乱码?(AB)(难度B)

 

A、response.getOutputStream().write(“中国”.getBytes(“utf-8”));

B、response.getWriter().write(“中国”);

C、response.setCharacterEncoding(“utf-8”);

  response.setHeader(“Content-Type”,”text/html;charset=utf-8”);

   response.getWriter().write(“中国”);

D、response.setContentType(“text/html;charset=utf-8”);

   response.getWriter().write(“中国”);

答案:AB

 

3.关于response对象,下列说法错误的是:(A)(难度A

A.response对象是代表响应的对象,对应着HTTP协议中的响应消息,所以它的API方法是HTTP协议规定的

B.response对象是服务器内部的对象,浏览器只能识别HTTP响应消息,并不知道response对象的存在

C.web容器从response的中获取信息组织成HTTP响应消息发送给浏览器

D.在HTML中可以书写<metahttp-equiv= "" content="">用来模拟HTTP响应头的功能

 

答案:A

考点:对responsehttp协议的细节理解

考点:response 流的关闭时间,以及response的数据缓存区域

 

*4.下列说法中正确的是:(BD)(难度B[f1] 

A、response是代表响应的对象,当需要向浏览器输出数据时只要调用response身上的getOutputStream方法或getWriter方法获取连接到浏览器的流,就可以直接将数据写出给浏览器了。

B、利用Response输出数据的时候,并不是直接将数据写给浏览器,而是写到了Response的缓冲区中,等到整个service方法返回后,由服务器拿出response中的信息组成响应消息返回给浏览器。

C、使用完流后要养成关闭流的习惯,所以在使用完Response获取的OutputStream或者Writer后应该尽早将其关闭放置浪费资源。

D、service方法返回后,服务器会自己检查Response获取的OutputStream或者Writer是否关闭,如果没有关闭,服务器自动帮你关闭,一般情况下不要自己关闭这两个流。

答案:BD

 

考点:response的两个流在转发中不能同时使用

5.如下代码如果使用浏览器访问Servlet1时会什么结果?(D)(难度C

Servlet1:

response.getOutputStream().write(“传智”.getBytes(“gbk”));

request.getRequestDispatcher(“/Servlet2”).forward(request,response);
Servlet2:
       response.getWriter().write(“播客”);
A、浏览器输出 传智播客

B、浏览器输出乱码

C、浏览器输出播客,因为在forward的过程中会先清空response的缓存区,所以传智两个字丢失掉了

D、服务器端报错

 

答案:D

考点:response的两个流在转发中不能同时使用,以及response中文乱码问题

6.如下代码如果使用浏览器访问Servlet1时会什么结果?(D) (难度B

Servlet1:

response.setHeader(“Content-Type”,“text/html;charset=utf-8”);

response.getOutputStream().write(“传智”.getBytes(“utf-8”));

request.getRequestDispatcher(“/Servlet2”).forward(request,response);
Servlet2:
       response.getOutputStream().write(“播客”.getBytes(“utf-8”));
A、浏览器输出 “传智播客”均正常无乱码。

B、浏览器输出“传智”为乱码,输出“播客”正常。

C、浏览器输出“传智”正常,输出“播客”乱码。

D、浏览器输出“播客”正常

 

答案:D

考点:http协议、转发和重定向综合

7.如果希望用户在访问完Servlet1后可以显示web应用目录下的index.jsp页面,且浏览器地址栏改变为index.jsp,在Servlet1中如下那种代码可以实现(web应用名为app)?(AC)(难度B

A、response.setHeader("Refresh","0;url=/app/index.jsp");

B、response.setStatus(302);

   response.setHeader("Location","/index.jsp");

C、response.sendRedirect(request.getContextPath()+“/index.jsp”);

D、request.getRequestDispatcher(“/index.jsp”).forward(request,response);

 

答案:AC

考点:ServletRequestHttpServletRequest的关系,以及request的创建时间与创建者

8.以下哪种说法是正确的 (B) (难度C

A、ServletRequest类是代表客户端的请求,因此可以利用它提供的方法获取浏览器的信息:如getRemoteAddr获取浏览器的ip地址、       getMethod获取浏览器发送请求的请求方式

B、HttpServletRequest类提供的getHeader、getIntHeader、getDateHeader方法都可以获取请求头信息,不同的是getHeader返回String类型,后两个是便捷方法可以用来快速获取类型为int和日期类型的请求头的值

C、request对象是由web容器负责创建的,一个浏览器对应一个request对象

D、request对象是由浏览器发送给服务器的,所以一次请求对应一个request对象

 

答案:B

考点:request作用域,以及AttributeParameter的区分

9.关于request域的说法不正确的是:(D)(难度A

A、request域作用范围为整个请求链

B、request域的生命周期为:在服务器针对一次请求创建出request对象后生命周期开始,在响应结束后,request对象销毁时生命周期结束。

C、request作用范围为整个请求链,因此常常在请求转发时由一个servlet(或jsp)向另一个servlet(或jsp)通过属性传递数据。

D、request域中可以获取到浏览器发送过来的请求参数。   

 

答案:D

考点:请求参数,已经重定向中请求参数的传递

10.关于request获取请求参数下列说法错误的是:(BC)(难度C

A、请求参数是浏览器访问服务器时同时传递过来的一些参数信息,是浏览器和服务器进行消息传递的一种方式。

B、request对象具有增加、获取、修改、删除请求参数的方法,使我们可以方便的在程序中增删改查浏览器发送过来的请求参数。

C、request对象中保存的请求参数在整个请求链中都可以进行操作,所以request对象是一个域对象,所有的请求参数组成了request域中最初的属性。

D、请求重定向过后,将不能再访问请求重定向前的请求参数。

 

答案:BC

考点:PostGet请求方式中,请求参数中文乱码

11.关于请求参数中可能具有的乱码,如下描述正确是:(ABCD)(难度B

A、浏览器在使用表单提交请求参数时使用的是什么编码集,是由浏览器打开当前表单页面时使用的编码决定的。我们可以通过Content-Type响应头通知浏览器以什么编码打开当前表单页面,那么这个表单提交的请求参数就使用该编码集。

B、tomcat服务器默认使用ISO8859-1编码解码请求参数,如果浏览器发送请求参数时,使用的编码集不同,就会有乱码。

C、request.setCharacterEconding方法只对请求体内容起作用,而get方式提交的参数是附加在URL后的,所以此方法只能解决POST乱码

D、对于get方式提交的请求参数,我们需要自己手动的经过将乱码先编码再解码的过程解决乱码。

 

答案:ABCD

考点:中文乱码与转发执行流程结合

12.应用中有三个servlet,其中的代码如下:

Servlet1:

response.setCharacterEncoding("utf-8");

response.setHeader("Content-Type","text/html;charset=utf-8");

response.getWriter().write("传播");

request.getRequestDispatcher("/servlet/Servlet2").forward(request,response);

Servlet2:

       response.getWriter().write("智慧");

       request.getRequestDispatcher("/servlet/Servlet3").forward(request,response);

       response.setHeader("Content-Type","text/html;charset=iso8859-1");

Servlet3:

response.getWriter().write("挥洒汗水");

请问当浏览器访问1时会有什么样的输出:(C)(难度C

A、浏览器地址栏仍然保持为Servlet1,输出为“传播智慧挥洒汗水”

B、浏览器地址栏仍然保持为Servlet1,输出为问号组成的乱码

C、浏览器地址栏仍然保持为Servlet1,输出为“挥洒汗水”

D、服务器报错,不能多次请求转发

 

答案:C

考点:转发与重定向同时使用冲突问题

13.名称为app的web应用中有三个servlet,其中的代码如下(web应用名为app):

(D)(难度C

Servlet1:

       response.setContentType("text/html;charset=gbk");

       response.getWriter().write("传播智慧");

       request.getRequestDispatcher("/servlet/Servlet2").forward(request,response);

       response.sendRedirect("/app/servlet/Servlet3");

Servlet2:

response.getWriter().write("收获成长");

Servlet3:

response.setContentType("text/html;charset=gbk");

response.getWriter().write("挥洒汗水");

请问当浏览器访问Servlet1时会有什么样的输出:

A、浏览器地址栏仍然保持为Servlet1,输出为“传播智慧收获成长”

B、浏览器地址栏仍然保持为Servlet1,输出为“收获成长”

C、浏览器地址栏仍然保持为Servlet1,输出为“挥洒汗水”

D、服务器端报错

 

答案:D

考点:转发与包含

14.下列说法正确的是:(ABC)(难度B[f2] 

A、请求转发和请求包含都是服务器端技术,与浏览器没有任何关系,浏览器并不知道获得的响应消息是否是经过转发或包含得到的。

B、请求转发的过程中转发前写入response中的响应体内容数据会丢失掉,最终输出的将是请求转发过程中的最后一个节点资源的数据输出。而请求包含可以实现将多个资源的数据合并后输出

C、利用好请求包含,可以将多个输出内容中相同的部分提取出来,方便开发

D、请求包含只能包含动态web资源,不能包含HTML文件

 

答案:ABC

考点:servlet之间跳转

15.在应用名称为app的web应用中有Servlet1和Serlvet2两个Servlet,下面的哪些代码写在Servlet1中可以使浏览器在访问Servlet1结束后自动访问Servlet2(web应用名为app)

(ACD)(难度B

A、response.sendRedirect(“/app/Servlet2”);

B、response.sendRedirect(“Servlet2”);

C、response.setStatues(302);

response.setHeader(“location”,”/app/Servlet2”);

D、response.setHeader(“Refresh”,”0;url=/app/Servlet2”);

 

答案:ABCD

考点:servlet中资源文件

16.在应用名称为app的web应用中的目录下有一个1.jpg文件,现在需要在Servlet中获取指向这个文件的字节输入流。如下哪些选项可以实现(C)(难度B

A、FileInputStream fin = new  FileInputStream(“1.jpg”);

B、FileInputStream fin = new  FileInputStream(“/1.jpg”);

C、FileInputStreamfin

= new FileInputStream(this.getServletContext().getRealPath(“/1.jpg”));

D、FileInputStream fin =this.getClass().getClassLoader().getResourceAsStream("1.jpg");

 

答案:C

考点:servlet基础API的使用

17.HttpServlet的子类要从HTTP请求中获得请求参数,应该调用哪个方法?(C)(难度A

A、调用HttpServletRequest对象的getAttribute()方法

B、调用ServletContext对象的getAttribute()方法

C、调用HttpServletRequest对象的getParameter()方法

D、调用HttpServletRequest对象的getHeader()方法

 

答案:C

考点:servlet基础API的使用

18.sendRedirect(java.lang.String url)方法是在哪个接口中定义的?(C)(难度A

A、HttpSession    

B、HttpServletRequest 

C、HttpServletResponse             

D、ServletResponse

 

答案:C

考点:servlet中资源文件

19.在应用名称为app的web应用中WEB-INF目录下有一个1.jpg文件,现在需要在Servlet中获取指向这个文件的字节输入流。如下哪些选项可以实现:(BD)(难度B

A、FileInputStream fin = new  FileInputStream(“/WEB-INF/1.jpg”);

B、FileInputStreamfin

=new FileInputStream(this.getServletContext().getRealPath(“/WEB-INF/1.jpg”));

C、FileInputStream fin =this.getClass().getResourceAsStream("1.jpg");

D、FileInputStream fin =this.getClass().getResourceAsStream("../1.jpg");

 

答案:BD

考点:请求与重定向

20.关于请求转发和重定向说法正确的是:(ABCD)(难度B

A.请求转发和重定向都可以实现访问一个资源时转向另一个资源

B.请求转发是一次请求一次响应,而重定向为两次请求两次响应

C.一般情况下应该使用请求转发,减少浏览器对服务器的访问,减轻服务器压力

D.如果需要改变浏览器的地址栏,或更改浏览器的刷新按钮的功能时需要使用重定向

 

答案:ABCD


 [f1]有歧义

 [f2]有异议B选项

黑马day05 response&request小测试有难度哦!

标签:

原文地址:http://blog.csdn.net/u014010769/article/details/46593921

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!