Servlet 访谈问题

2025 年 3 月 16 日 | 阅读时间:5 分钟

这里列出了 30 个适合初学者和专业人士的 Servlet 访谈问题。如果您知道任何未包含在此处的 Servlet 访谈问题,请在“提问”部分发布您的问题。


1) 一个 Servlet 会创建多少个对象?

在 Servlet 或 Web 容器的第一次请求时只创建一个对象。


2) Servlet 的生命周期是什么?

  1. Servlet 被加载
  2. Servlet 被实例化
  3. Servlet 被初始化
  4. 服务请求
  5. Servlet 被销毁
更多详情...

3) Servlet 的生命周期方法有哪些?

方法描述
public void init(ServletConfig config)它在 Servlet 的第一个请求到来时只被调用一次。它用于初始化 Servlet。
public void service(ServletRequest request,ServletResponse)throws ServletException,IOException它在每个请求时被调用。service() 方法用于服务请求。
public void destroy()它在 Servlet 被卸载时只被调用一次。
更多详情...

4) 谁负责创建 Servlet 对象?

Web 容器或 Servlet 容器。


5) Servlet 对象何时创建?

在第一次请求时。


6) Get 和 Post 方法有什么区别?

GetPost
1) 只能发送有限的数据量,因为数据在头部发送。可以发送大量数据,因为数据在主体中发送。
2) 不安全,因为数据会暴露在 URL 栏中。安全,因为数据不会暴露在 URL 栏中。
3) 可以添加到书签无法添加到书签
4) 幂等非幂等
5) 它更有效且更常用它效率较低且使用较少
更多详情...

7) PrintWriter 和 ServletOutputStream 有什么区别?

PrintWriter 是字符流类,而 ServletOutputStream 是字节流类。PrintWriter 类只能用于写入基于字符的信息,而 ServletOutputStream 类可以用于写入原始值以及基于字符的信息。


8) GenericServlet 和 HttpServlet 有什么区别?

GenericServlet 与协议无关,而 HttpServlet 特定于 HTTP 协议。HttpServlet 提供额外的功能,如状态管理等。


9) 什么是 Servlet 协作?

当一个 Servlet 与另一个 Servlet 通信时,它被称为 Servlet 协作。Servlet 协作有许多方式

  • RequestDispacher 接口
  • sendRedirect() 方法等。
更多详情...

10) RequestDispatcher 接口的目的是什么?

RequestDispacher 接口提供了将请求分派到另一个资源的功能,该资源可以是 html、servlet 或 jsp。此拦截器还可以用于包含另一个资源的内容。

更多详情...

11) 能否从 Servlet 调用 JSP?

是的,一种方法是使用 RequestDispatcher 接口,例如

更多详情...

12) forward() 方法和 sendRedirect() 方法的区别?

forward() 方法sendRedirect() 方法
1) forward() 将相同的请求发送到另一个资源。1) sendRedirect() 方法始终发送新请求,因为它使用浏览器的 URL 栏。
2) forward() 方法在服务器端工作。2) sendRedirect() 方法在客户端工作。
3) forward() 方法仅在服务器内部工作。3) sendRedirect() 方法在服务器内部和外部都工作。

13) ServletConfig 和 ServletContext 有什么区别?

容器为每个 Servlet 创建 ServletConfig 对象,而为每个 Web 应用程序创建 ServletContext 对象。


14) 什么是 Session Tracking(会话跟踪)?

Session 简单地意味着一段特定的时间间隔。

Session Tracking 是一种维护用户状态的方法。Http 协议是无状态协议。每次用户向服务器发出请求时,服务器都将该请求视为新请求。因此,我们需要维护用户状态来识别特定用户。

更多详情...

15) 什么是 Cookies(Cookie)?

Cookie 是一小段信息,可以在多个客户端请求之间持久化。Cookie 具有名称、单个值以及可选属性,例如注释、路径和域限定符、最大年龄和版本号。

更多详情...

16) Cookie 和 HttpSession 有什么区别?

Cookie 在客户端工作,而 HttpSession 在服务器端工作。


17) 什么是 Filter(过滤器)?

过滤器是一个在请求的预处理或后处理时被调用的对象。它是可插拔的。

更多详情...

18) 项目部署时如何执行任何操作?

通过 ServletContextListener 接口。


19) Cookie 的缺点是什么?

如果从浏览器禁用了 Cookie,它将不起作用。

更多详情...

20) 如何使用 Servlet 将文件上传到服务器?

一种方法是使用第三方提供的 MultipartRequest 类。

更多详情...

21) Servlet 中的 load-on-startup 是什么意思?

web.xml 中 Servlet 的 load-on-startup 元素用于在项目部署或服务器启动时加载 Servlet。因此,它节省了第一次请求响应的时间。

更多详情...

22) 如果在 load-on-startup 中传递负值会怎样?

这不会影响容器,现在 Servlet 将在第一次请求时加载。

更多详情...

23) 什么是 war 文件?

war(Web Archive)文件指定 Web 元素。Servlet 或 jsp 项目可以转换为 war 文件。将一个 Servlet 项目从一个地方移动到另一个地方会更快,因为它被合并到一个文件中。

更多详情...

24) 如何创建 war 文件?

war 文件可以使用 jdk/bin 目录中的 jar 工具创建。如果您使用的是 Eclipse 或 Netbeans IDE,可以将您的项目导出为 war 文件。

要从控制台创建 war 文件,您可以编写以下代码。

现在当前目录的所有文件将转换为 abc.war 文件。

更多详情...

25) Servlet 3 中使用了哪些注解?

主要有 3 个注解用于 Servlet。

  1. @WebServlet:用于 Servlet 类。
  2. @WebListener:用于 Listener 类。
  3. @WebFilter:用于 Filter 类。

26) 项目部署和取消部署时会触发哪个事件?

ServletContextEvent。

更多详情...

27) Session 创建和销毁时会触发哪个事件?

HttpSessionEvent。

更多详情...

28) 在应用程序作用域中设置、获取或删除属性时会触发哪个事件?

ServletContextAttributeEvent。


29) welcome-file-list 的用途是什么?

它用于为项目指定欢迎文件。

更多详情...

30) Servlet 中 attribute(属性)的用途是什么?

Attribute 是一个 Map 对象,可用于在请求、会话或应用程序作用域中设置、获取或删除。它主要用于在 Servlet 之间共享信息。

更多详情...