Servlet GenericServlet 类

Servlet GenericServlet 类,在讨论 Servlet API 时,我已经讨论了一些关于GenericServlet的内容。在本文中,我将详细讨论GenericServlet

GenericServlet是一个独立于协议的 Servlet,它应该始终覆盖service()方法来处理客户端请求。service()方法接受两个参数ServletRequest对象和ServletResponse对象。请求对象告诉 servlet 客户端发出的请求,而响应对象用于将响应返回给客户端。

GenericServlet如何工作?

Servlet GenericServlet 类

GenericServlet的层次结构

java.lang.Object
    |_extended byjavax.servlet.GenericServlet

GenericServlet是一个抽象类,它只有一个抽象方法,即service()。这就是为什么当我们通过扩展GenericServlet类来创建GenericServlet时,我们必须覆盖service()方法。

使用GenericServlet的优点:

  1. GenericServlet更容易编写
  2. 具有简单的生命周期方法
  3. 要编写GenericServlet,您只需要扩展javax.servlet.GenericServlet并覆盖service()方法(请查看下面的示例)。

使用GenericServlet的缺点:

使用GenericServlet并不是那么容易,因为我们在GenericServlet中没有像doGet()doPost()doHead()等方便的方法可以在HttpServlet中使用。
HttpServlet中,我们需要为特定请求覆盖特定的便捷方法,例如,如果您需要获取信息,则覆盖doGet(),如果要向服务器发送信息覆盖doPost()。但是在GenericServlet中,我们只为每种类型的请求覆盖service()方法,这很麻烦。

我总是建议你使用HttpServlet而不是GenericServletHttpServlet更易于使用,并且具有比GenericServlet更多的方法。

GenericServlet的示例

我在这个例子中使用 Eclipse IDE。从 Eclipse 文件菜单中创建新的Dynamic Web Project

我已经解释了在 Eclipse IDE 中创建 Servlet 的每一步,但是如果您刚接触 Eclipse 并且没有在系统上安装它,那么请参考本指南:如何安装 Eclipse,设置 Tomcat 并使用 Eclipse IDE运行第一个 servlet 程序

完成后,在 IDE 中创建以下所有文件后,项目结构(或层次结构)将如下所示。

Servlet GenericServlet 类

index.htm

我们正在创建一个 html 文件,一旦我们点击网页上的链接就会调用 servlet。在WebContent文件夹中创建此文件。该文件的路径应如下所示:WebContent/index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Generic Servlet Demo</title>
</head>
<body>
<a href="welcome">Click to call Servlet</a>
</body>
</html>

ExampleGeneric.java

现在,我们通过扩展GenericServlet类来创建GenericServlet。创建GenericServlet时,应始终覆盖service()方法。右键单击src文件夹并创建一个新的类文件,将该文件命名为ExampleGeneric。文件路径应如下所示:Java Resouces/src/default package/ExampleGeneric.java

import java.io.*;
import javax.servlet.*;

public class ExampleGeneric extends GenericServlet{
 public void service(ServletRequest req,ServletResponse res)
throws IOException,ServletException{
   res.setContentType("text/html");
   PrintWriter pwriter=res.getWriter();
   pwriter.print("<html>");
   pwriter.print("<body>");
   pwriter.print("<h2>Generic Servlet Example</h2>");
   pwriter.print("<p>Hello BeginnersBook Readers!</p>");
   pwriter.print("</body>");
   pwriter.print("</html>");
 }
}

web.xml

此文件可在此路径WebContent/WEB-INF/web.xml中找到。在此文件中,我们将使用特定 URL 映射 Servlet。由于我们在单击index.html页面上的链接时调用欢迎页面,因此我们将欢迎页面映射到我们上面创建的 Servlet 类。

<web-app>
<display-name>BeginnersBookServlet</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>MyGenericServlet</servlet-name>
<servlet-class>ExampleGeneric</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>MyGenericServlet</servlet-name>
<url-pattern>/welcome</url-pattern>
</servlet-mapping>

</web-app>

输出:

Servlet GenericServlet 类

点击第一个屏幕中的链接后的屏幕:

Servlet GenericServlet 类

GenericServlet类的方法:

以下是GenericServlet类的所有方法的列表。
1. public void init():这是一种方便的方法。可以重写此方法,因此无需调用super.init(config)

  1. public void init(ServletConfig config):由 servlet 容器调用以指示 servlet 正在投入使用,此方法用于初始化 servlet。

  2. public String getInitParameter(String name):返回包含给定初始化参数值的String,如果参数不存在,则返回null

  3. public Enumeration getInitParameterNames():返回web.xml文件中定义的所有参数的名称,如果web.xml没有任何参数,则返回null

  4. public abstract void service(ServletRequest request, ServletResponse response):由 Servlet 容器调用,允许 servlet 响应客户端发出的请求。

  5. public void destroy():servlet 容器在 servlet 生命周期结束时调用一次,表明 servlet 正在被销毁。

  6. public ServletConfig getServletConfig():返回初始化此 servlet 的ServletConfig对象

  7. public String getServletInfo():返回有关 servlet 的信息。

  8. public ServletContext getServletContext():返回ServletContext对象,由init方法传递给这个 servlet

  9. public String getServletName():返回 servlet 实例的名称。

  10. public void log(String msg):在 servlet 日志文件中写入给定的消息。

  11. public void log(String msg, Throwable t):在 servlet 日志文件中写入解释性消息,包括描述错误或异常的String

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程