Java Web基础知识测试题及答案解析

1. 以下关于B/S、C/S说法正确的是()。

A: B/S架构比C/S架构更优秀 B: B/S架构是C/S架构的替代品 C: B/S是指客户端/服务器,C/S是指浏览器/服务器 D: B/S架构比C/S架构的维护和升级方式简单

答案:D

解析:

  • B/S架构(浏览器/服务器)和C/S架构(客户端/服务器)都是常见的软件架构模式,它们各有优缺点,不能说哪种架构更优秀。
  • B/S架构并不是C/S架构的替代品,它们在不同的场景下有不同的适用性。
  • B/S架构的维护和升级方式相对简单,因为只需要更新服务器端的代码,而C/S架构则需要更新客户端和服务器端的代码。

2. 以下哪个选项表示请求转发()

A. response.forward() B. response.sendRedirect() C. session.getRequestDispatcher().forward(request,response) D. request.getRequestDispatcher().forward(request,response)

答案:D

解析:

  • request.getRequestDispatcher().forward(request,response) 用于将请求转发到同一个应用程序中的另一个资源(Servlet、JSP等)。
  • response.sendRedirect() 用于重定向到另一个资源,可以是同一个应用程序内的,也可以是其他应用程序的。

3. 给定一个 Servlet 的doGet方法中的代码片段,如下:

request.setAttribute('name','zhang'); request.getRequestDispatcher('/myservlet'); 那么在MyServlet中可以使用()方法把属性 name的值取出来。

A. String str=request.getAttribute('name'); B. String str=(String)request.getAttribute('name'); C. Object str=request.getAttribute('name'); D. 无法取出来

答案:B

解析:

  • request.setAttribute() 方法用于向请求对象中添加属性,而 request.getAttribute() 方法用于从请求对象中获取属性。
  • request.getAttribute() 方法返回的是 Object 类型,所以需要将其强制转换为 String 类型才能使用。

4. 下面( )方法可以返回当前请求的请求方式

A. request.getAttribute() B. session.getMethod() C. request.getMethod() D. request.getRequestURI()

答案:C

解析:

  • request.getMethod() 方法用于获取当前请求的 HTTP 方法,例如 GET、POST、PUT、DELETE 等。

5. 当一个Servlet首次被请求的时候,服务器首先会调用________方法

A. doGet B. doPost C. doInit D. init

答案:D

解析:

  • 当一个 Servlet 首次被请求时,服务器会首先调用 init() 方法来初始化 Servlet。
  • doGet()doPost() 方法分别用于处理 GET 和 POST 请求。

6. 从HTTP请求中,获得请求参数,应该调用( )

A. request对象的getAttribute()方法 B. request对象的getParameter()方法 C. session对象的getAttribute()方法 D. session对象的getParameter()方法

答案:B

解析:

  • request.getParameter() 方法用于从 HTTP 请求中获取请求参数。
  • request.getAttribute() 方法用于从请求对象中获取属性,而 session.getAttribute() 方法用于从会话对象中获取属性。

7. 使用POST方式提交数据,接收数据时,处理中文乱码最直接有效方式为 ( )

A. request.setCharacterEncoding('utf-8'); B. response.setContentType('text/html;charset=utf-8'); C. String name=newString(request.getParameter('name').getBytes('ISO-8859-1'),'gbk'); D. response.setCharacterEncoding('gbk');

答案:A

解析:

  • request.setCharacterEncoding('utf-8'); 用于设置请求的字符编码为 UTF-8,这样就可以正确解析中文数据。
  • response.setContentType('text/html;charset=utf-8'); 用于设置响应的字符编码为 UTF-8,这样可以保证浏览器正确显示中文。
  • 选项 C 和 D 都是错误的,选项 C 试图将 ISO-8859-1 编码的字节数组转换为 gbk 编码,这种方法不稳定且可能导致乱码问题。选项 D 仅设置了响应的字符编码,而没有设置请求的字符编码。

8. 完整的配置一个Servlet需要__________________标签

A. <webapp></webapp> B. <servlet></servlet><servlet-mapping></servlet-mapping> C. <servlet-name/><servlet-class> D. <servlet-mapping><servlet-name>

答案:B

解析:

  • <servlet></servlet> 标签用于定义一个 Servlet,它包含 <servlet-name><servlet-class> 属性。
  • <servlet-mapping></servlet-mapping> 标签用于将 Servlet 映射到一个 URL 模式,它包含 <servlet-name><url-pattern> 属性。

9. 在HTTP协议中,用于发送大量数据的方法是 ( )

A. get B. post C. put D. options

答案:B

解析:

  • POST 方法用于发送大量数据,因为它没有长度限制,并且数据在请求体中传输。
  • GET 方法用于发送少量数据,并且数据在 URL 中传输,长度有限制。

10. 在J2EE中,给定某Servlet的代码如下,编译运行该文件,以下陈述正确的是( )。

Public class Servlet1 extends HttpServlet{
  Public void init() throws ServletException{
  }
  Public void service(HttpServletRequest request, HttpServletResponse response) Throws ServletException, IOException{
    PrintWriter out = response.getWriter();
    out.println('hello!');
  }
}

A. 编译该文件时会提示缺少doGet()或者dopost()方法,编译不能够成功通过 B. 编译后,把Servlet1.class放在正确位置,运行该Servlet,在浏览器中会看到输出文字:hello! C. 编译后,把Servlet1.class放在正确位置,运行该Servlet,在浏览器中看不到任何输出的文字 D. 编译后,把Servlet1.class放在正确位置,运行该Servlet,在浏览器中会看到运行期错误信息内容:

答案:B

解析:

  • 尽管代码中没有显式定义 doGet()doPost() 方法,但 service() 方法会被调用,并根据请求方法类型(GET 或 POST)自动调用 doGet()doPost() 方法。
  • service() 方法中已经使用了 response.getWriter() 获取输出流并输出 'hello!',因此在浏览器中会看到输出文字:hello!。

原文地址: https://www.cveoy.top/t/topic/oTzd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录