B/S、C/S架构、Servlet、HTTP协议常见问题解答

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架构的优势在于:
    • 维护和升级方便:只需更新服务器端的程序,所有客户端都可以同步更新。
    • 成本低:无需在每个客户端安装软件,减少了维护成本。
    • 可扩展性强:可以方便地扩展到更多用户。

2. 以下哪个选项表示请求转发() A. response.forward() B. response.sendRedirect() C. session.getRequestDispatcher().forward(request,response) D. request.getRequestDispatcher().forward(request,response)

答案:D

解释:

  • 请求转发:将请求从一个Servlet转发到另一个Servlet,并保持同一个HTTP请求。
  • request.getRequestDispatcher().forward(request,response) 是实现请求转发的正确方式。
  • response.sendRedirect() 是实现重定向,会产生新的HTTP请求。

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

request.setAttribute('name', 'zhang');
request.getRequestDispatcher('/myservlet').forward(request,response);

那么在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 对象,需要进行类型转换才能使用。

4. 下面( )方法可以返回当前请求的请求方式 A. request.getAttribute() B. session.getMethod() C. request.getMethod() D. request.getRequestURI()

答案:C

解释:

  • request.getMethod() 方法返回当前请求的 HTTP 请求方式(例如:GET、POST)。
  • request.getAttribute() 用于获取请求域中的属性。
  • session.getMethod() 不存在,session 对象用于存储会话信息。
  • request.getRequestURI() 用于获取请求的 URL 地址。

5. 当一个Servlet首次被请求的时候,服务器首先会调用________方法 A. doGet B. doPost C. doInit D. init

答案:D

解释:

  • 当 Servlet 首次被请求时,服务器会调用 init() 方法进行初始化。
  • 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()session.getParameter() 用于获取会话域中的数据,与请求参数无关。

7. 使用POST方式提交数据,接收数据时,处理中文乱码最直接有效方式为 ( ) A. request.setCharacterEncoding('utf-8'); B. response.setContentType('text/html;charset=utf-8'); C. String name = new String(request.getParameter('name').getBytes('ISO-8859-1'),'gbk'); D. response.setCharacterEncoding('gbk');

答案:A

解释:

  • request.setCharacterEncoding('utf-8'); 设置请求编码为 UTF-8,可以解决 POST 请求中中文乱码问题。
  • response.setContentType('text/html;charset=utf-8'); 设置响应编码为 UTF-8,用于浏览器显示数据。
  • C 选项是使用 ISO-8859-1 编码转换,无法解决中文乱码问题。
  • response.setCharacterEncoding('gbk'); 设置响应编码为 GBK,用于浏览器显示数据,但不能解决 POST 请求中中文乱码问题。

8. 完整的配置一个Servlet需要__________________标签 A. B. C. D.

答案:B

解释:

  • <servlet></servlet> 标签用于定义 Servlet,包含 Servlet 的名称和类名。
  • <servlet-mapping></servlet-mapping> 标签用于映射 Servlet,将 Servlet 与 URL 路径关联起来。

9. 在HTTP协议中,用于发送大量数据的方法是 ( ) A. get B. post C. put D. options

答案:B

解释:

  • POST 方法用于发送大量数据,因为 GET 方法的 URL 长度有限制。
  • PUT 方法用于更新资源。
  • OPTIONS 方法用于获取服务器支持的 HTTP 方法。

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

解释:

  • Servlet 的 service() 方法用于处理所有请求,但通常需要根据请求方式调用 doGet()doPost() 方法。
  • 在该代码中,虽然没有显式定义 doGet()doPost() 方法,但 service() 方法会根据请求方式自动调用 doGet()doPost() 方法。
  • 因此,编译运行该 Servlet 能够正常执行,在浏览器中会看到输出文字:hello!。

补充说明:

  • 一般情况下,建议在 Servlet 中显式定义 doGet()doPost() 方法,以提高代码可读性和可维护性
B/S、C/S架构、Servlet、HTTP协议常见问题解答

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

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