Notas de estudio de servlet (1) (introducción estándar, clase de implementación de interfaz, pasos de desarrollo, ciclo de vida)

Uno, introducción a la especificación de servlet

1. La especificación del servlet proviene de una especie de especificación Java EE

2. Función:

(1) Especifique los pasos de desarrollo de "archivos de recursos dinámicos"

(2) Especifique las reglas para que el servidor Http llame a "archivos de recursos dinámicos"

(3) Especificar las reglas para los objetos de instancia del "archivo de recursos dinámicos" de administración del servidor HTTP

Dos, clase de implementación de interfaz de servlet

1. La interfaz de Servlet proviene de una interfaz bajo la especificación de Servlet, que existe en el paquete jar proporcionado por el servidor Http

2. Hay un servlet.api.jar en la carpeta lib en el servidor Tomcat para almacenar la interfaz Servlet (interfaz javax.servlet.Servlet)

3. En la especificación de Servlet, el "archivo de recursos dinámicos" al que puede llamar el servidor Http debe ser una clase de implementación de interfaz de Servlet.

//举例
class Student{
//不是动态资源文件,Tomcat无权调用
}

class Teacher implements Servlet{
//合法动态资源文件,Tomcat有权利调用
}

  Servlet obj=new Teacher();
  obj.doGet();

Tres, pasos de desarrollo de la clase de implementación de la interfaz Servlet

Paso 1: Cree una nueva clase oneServlet y herede la clase principal de HttpServlet para convertirla en una clase de implementación de interfaz de Servlet

              Tomcat llama a la clase de implementación de la interfaz de Servlet de acuerdo con la especificación de Servlet:
                         1. Tomcat tiene derecho a llamar al objeto de instancia de la clase de implementación de la interfaz de Servlet
                                   Servlet oneServlet = new Servlet ();
                         2. Tomcat llama al método de servicio de acuerdo con la instancia actual objeto para procesar la solicitud actual
                                   oneServlet.service ();

                                           extiende extiende implementa
                              oneServlet ----------------> (resumen) HttpServlet ---------------> (resumen) GenericServlet ----- -------------> Servlet 接口
                                                                                                                                              init
                                                                                                                                              getServletConfig
                                                                                                                                              getServletInfo
                                                                                                                                              Destory
                       utiliza aquí el
                       papel de las clases abstractas:
                       reduzca la dificultad de la clase de implementación de la interfaz al proceso de implementación de la interfaz y deje que los métodos abstractos no utilizados en la interfaz se entreguen a la clase abstracta para completar, de modo que la clase de implementación de la interfaz solo necesita usar lo que necesita. El método se puede reescribir.

Paso 2: reescriba los dos métodos de la clase principal de HttpServlet, a saber, doGet y doPost

               La clase padre decide bajo qué circunstancias llamar al método en la subclase, que usa un patrón de diseño, el patrón de plantilla.

HttpServlet : service(){
   if(请求方法==GET){
        this.doGet();
    }else if(请求方法==POST){
         this.doPost();
    }
}

El tercer paso: "registrar" la información de la clase de implementación de la interfaz Servlet en el servidor Tomcat y escribirla en web.xml

<!-- 将Servlet接口实现类的类路径交给Tomcat -->
<servlet>
   <servlet-name>oneServlet</servlet-name>  <!-- 声明一个变量存储 -->
   <servlet-class>com.mrliu22.oneServlet</servlet-class>  <!-- Servlet接口类的类路径,我的是com.mrliu22包下的oneServlet -->
<servlet/>

<!-- 为了降低用户访问Servlet接口实现类的难度,可以给其起个别名 -->
<servlet-mapping>
    <servlet-name>oneServlet</servlet-name>
    <url-pattern>/one</url-pattern>  <!-- 别名必须以“/”为开头 -->
</servlet-mapping>

Ruta de acceso: http: // localhost: 8080 / nombre del proyecto / uno

Cuatro, ciclo de vida del objeto Servlet

1. Todos los objetos de instancia de la clase de implementación de la interfaz Servlet en el sitio web son creados por el servidor Http y los desarrolladores no pueden crearlos manualmente.

2. De forma predeterminada, solo cuando el servidor Http recibe una solicitud para la clase de implementación de la interfaz Servlet actual, creará automáticamente un objeto de instancia de la clase de implementación de la interfaz Servlet. También puede configurar manualmente el servidor Http para crear un objeto de instancia de una determinada clase de implementación de interfaz de Servlet cuando se inicia. Puede configurarlo así:

<servlet>
   <servlet-name>oneServlet</servlet-name>
   <servlet-class>com.mrliu22.oneServlet</servlet-class>
   <!-- 这里只要填写一个大于0的整数就可以手动设置Http服务器一启动就自动创建oneServlet接口实现类 -->
   <load-on-startup>30</load-on-startup>  
</servlet>

3. Durante la operación del servidor Http, solo se creará un objeto de instancia de una clase de implementación de interfaz Servlet. Puede verificarse imprimiendo la información en el método de construcción y luego visitando varias veces.

 

 

 

 

 

 

 

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/MrLiu22/article/details/113030873
Recomendado
Clasificación