标签:
第5天:javaweb之request/respone
考点:request和response生命周期。以及两个对象的常用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
考点:对response和http协议的细节理解
考点:response 流的关闭时间,以及response的数据缓存区域
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
考点:ServletRequest与HttpServletRequest的关系,以及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作用域,以及Attribute和Parameter的区分
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
考点:Post与Get请求方式中,请求参数中文乱码
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
考点:转发与包含
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
黑马day05 response&request小测试有难度哦!
标签:
原文地址:http://blog.csdn.net/u014010769/article/details/46593921