B/S、C/S架构、Servlet、HTTP协议常见问题解答
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
解释:
<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()方法,以提高代码可读性和可维护性
原文地址: https://www.cveoy.top/t/topic/oTAf 著作权归作者所有。请勿转载和采集!