Ejemplo básico del programa Servlet de implementación del servidor JavaWeb-1-Tomcat

Tabla de contenido

1. Introducción a Servlet

2. Implementar manualmente el programa Servlet

2.1 Los pasos para desarrollar un programa Servlet son los siguientes

3. Diagrama de estructura del proyecto: implementación del servidor Tomcat Diagrama de estructura del proyecto del programa Servlet

4. Empiece a escribir el procesador Serlvet

4-1. Escriba el primer controlador de Servlet-HelloServlet implementa Servlet

4-2, escriba un segundo controlador de Servlet-HttpServletProcessor extiende HttpServlet

4-3 Admite la generación automática y rápida de un procesador Servlet en IDEA (simplificado 4-1 y 4-2)

4-4. Configure el procesador de servlet que acaba de escribir en el archivo de configuración web.xml

4-5. Escriba un botón de envío de front-end para probar si el procesador Servlet está funcionando correctamente

4-6, visualización de los resultados de la prueba

4.6.1 El servidor Tomcat se inició correctamente: el paquete war se implementó correctamente

4.6.2 El navegador envía una solicitud HTTP

4.6.3 El servidor Tomcat responde

5. Análisis, comprensión y dominio de la estructura del proyecto web

5.1 Introducción a todo el catálogo de proyectos web dinámicos (recursos dinámicos-procesador Servlet; recursos estáticos-jpg, etc.)

5.2 El proceso general desde la solicitud HTTP hasta la respuesta HTTP de la arquitectura B / S-1

5.3 El proceso general desde la solicitud HTTP hasta la respuesta HTTP en la arquitectura B / S-2

5.4 Principio de acceso al programa de servlet: ¿Cómo accede la solicitud HTTP a un determinado procesador de servlet en el servidor Tomcat?

5.5 Marco adicional de contenido-WebFlux en Spring5

6. Errores comunes del programa Servlet

6.0 Configuración estándar del archivo web.xml

6.1 archivo web.xml: la ruta configurada en url-pattern no comienza con una barra \

6.2 archivo web.xml: los dos valores de mapeo en el nombre del servlet son inconsistentes

6.3 archivo web.xml: el nombre de clase completo de la etiqueta de clase de servlet está configurado incorrectamente

7, ciclo de vida del servlet

Video de aprendizaje de referencia

1. Introducción a Servlet

(1) Servlet es una de las especificaciones (interfaz) de JavaEE.

(2) Servlet es uno de los tres componentes principales de JavaWeb. Los tres componentes principales son: programa de servlet, filtro, escucha.

(3) Servlet es un programa Java que se ejecuta en el servidor, puede recibir la solicitud del cliente y responder a los datos para que el cliente los analice y muestre.

2. Implementar manualmente el programa Servlet

(1) Escriba una clase para implementar la interfaz Servlet y reescriba el método service () en la interfaz Servlet. El método service () se utiliza para procesar la solicitud enviada por el cliente y responder a los datos.

(2) Configure la dirección de acceso del programa Servlet en el archivo web.xml en la carpeta WEB-INF.

2.1 Los pasos para desarrollar un programa Servlet son los siguientes

3. Diagrama de estructura del proyecto: implementación del servidor Tomcat Diagrama de estructura del proyecto del programa Servlet

4. Empiece a escribir el procesador Serlvet

4-1. Escriba el primer controlador de Servlet-HelloServlet implementa Servlet

(1) Cree una clase HelloServlet en el directorio src y herede la interfaz de Servlet.

package com.wind.servlet;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

/**
一个servlet程序
 */
public class HelloServlet implements Servlet {

    public HelloServlet() {
        System.out.println("1.Servlet的无参构造器执行了.");
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("2.Servlet的init方法执行了.");
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("3.Servlet的service方法执行了.");
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        String method = httpServletRequest.getMethod();
        if ("GET".equals(method)) {
            this.doGet();
        }
        if ("POST".equals(method)) {
            this.doPost();
        }
    }

    private void doPost() {
        System.out.println("3.1 Servlet的service方法-doPost-执行了.");
        System.out.println("3.1 Servlet的service方法-doPost-执行了2.");
    }

    private void doGet() {
        System.out.println("3.1 Servlet的service方法-doGet-执行了.");
        System.out.println("3.1 Servlet的service方法-doGet-执行了2.");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {
        System.out.println("4.Servlet的destroy方法执行了.");
    }
}

4-2, escriba un segundo controlador de Servlet-HttpServletProcessor extiende HttpServlet

(1) Cree otra clase HttpServletProcessor en el directorio src y herede la interfaz HttpServlet.

(2) En proyectos reales, la interfaz HttpServlet se usa más comúnmente. Nota: La interfaz HttpServlet es una subinterfaz de Servlet.

package com.wind.servlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 通常会使用实现HttpServlet这个抽象类的方式来实现Servlet处理器
 */
public class HttpServletProcessor extends HttpServlet {

    private static final long serialVersionUID = -7511536601794982778L;

    public HttpServletProcessor() {
        System.out.println("1.HttpServletProcessor extends HttpServlet 的无参构造器执行了...");
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("2.HttpServletProcessor extends HttpServlet 的init方法执行了...");
    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("3.HttpServletProcessor extends HttpServlet, doGet done...");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("4.HttpServletProcessor extends HttpServlet, doPost done...");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {
        System.out.println("5.HttpServletProcessor extends HttpServlet 的destroy方法执行了.");
    }

}

4-3 Admite la generación automática y rápida de un procesador Servlet en IDEA (simplificado 4-1 y 4-2)

(1) Cree otra clase HttpServletProcessorAuto nuevamente en el directorio src y herede la interfaz HttpServlet.

4-4. Configure el procesador de servlet que acaba de escribir en el archivo de configuración web.xml

(1) Configure en web.xml cada procesador Servlet implementado en el servidor Tomcat y su URL de ruta de acceso correspondiente

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!--1.使用servlet标签给Tomcat配置动态servlet程序-->
    <servlet>
        <!--servlet-name标签:给servlet程序起一个别名(一般就是类名)-->
        <servlet-name>HelloServlet</servlet-name>
        <!--servlet-class标签:servlet程序的全类名-->
        <servlet-class>com.wind.servlet.HelloServlet</servlet-class>
    </servlet>

    <!--2.使用servlet-mapping标签给动态servlet程序配置访问地址-->
    <servlet-mapping>
        <!--servlet-name标签:告诉Tomcat服务器,我当前配置的访问地址是给哪个servlet程序使用-->
        <servlet-name>HelloServlet</servlet-name>
        <!--url-pattern标签:配置访问地址.
        (1)/        :斜杠表示,在服务器解析的时候,表示访问地址是:http://ip:port/工程路径
        (2)/hello   : 表示访问地址是:http://ip:port/工程路径/hello 比如:http://localhost:8080/javaWeb/hello -->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
    <!--3.使用a.html访问-->

    <!--1.使用servlet标签给Tomcat配置动态servlet程序-->
    <servlet>
        <servlet-name>HttpServletProcessor</servlet-name>
        <servlet-class>com.wind.servlet.HttpServletProcessor</servlet-class>
    </servlet>

    <!--2.使用servlet-mapping标签给动态servlet程序配置访问地址-->
    <servlet-mapping>
        <servlet-name>HttpServletProcessor</servlet-name>
        <url-pattern>/httpServlet</url-pattern>
    </servlet-mapping>
    <!--3.使用b.html访问-->

</web-app>

4-5. Escriba un botón de envío de front-end para probar si el procesador Servlet está funcionando correctamente

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="http://localhost:8080/javaWeb/hello" method="POST">
    <!--action属性值与web.xml中的<url-pattern>标签内容一致,用于访问到servlet程序的service方法-->
    <input type="submit">
</form>
</body>
</html>

4-6, visualización de los resultados de la prueba

4.6.1 El servidor Tomcat se inició correctamente: el paquete war se implementó correctamente

4.6.2 El navegador envía una solicitud HTTP

4.6.3 El servidor Tomcat responde

5. Análisis, comprensión y dominio de la estructura del proyecto web

5.1 Introducción a todo el catálogo de proyectos web dinámicos (recursos dinámicos-procesador Servlet; recursos estáticos-jpg, etc.)

5.2 El proceso general desde la solicitud HTTP hasta la respuesta HTTP de la arquitectura B / S-1

5.3 El proceso general desde la solicitud HTTP hasta la respuesta HTTP en la arquitectura B / S-2

5.4 Principio de acceso al programa de servlet: ¿Cómo accede la solicitud HTTP a un determinado procesador de servlet en el servidor Tomcat?

5.5 Marco adicional de contenido-WebFlux en Spring5

6. Errores comunes del programa Servlet

6.0 Configuración estándar del archivo web.xml

6.1 archivo web.xml: la ruta configurada en url-pattern no comienza con una barra \

6.2 archivo web.xml: los dos valores de mapeo en el nombre del servlet son inconsistentes

6.3 archivo web.xml: el nombre de clase completo de la etiqueta de clase de servlet está configurado incorrectamente

7, ciclo de vida del servlet

Después de acceder al programa de servlet por primera vez, se ejecutará en el siguiente orden:

(1) Método de constructor para ejecutar el programa Servlet. (2) Ejecute el método de inicialización init ().

(3) Ejecute la lógica empresarial, es decir, el método service (). (4) Ejecute el método destroy ().

Entre ellos, el paso (1) y el paso (2) se ejecutarán cuando se cree el programa Servlet por primera vez (cada vez que se inicie el servicio), el paso (3) se ejecutará cada actualización (cada visita), (4) El paso se ejecutará una vez cuando se detenga el servidor Tomcat.

Video de aprendizaje de referencia

(1) Versión completa del video de aprendizaje de javaWeb en la estación B: https://www.bilibili.com/video/BV1Y7411K7zz?p=99

(2) API en línea de java8: https://www.matools.com/api/java8

(3) Sitio del blog: https://blog.csdn.net/weixin_49343190/article/details/107878144

 

Supongo que te gusta

Origin blog.csdn.net/cmm0401/article/details/111408300
Recomendado
Clasificación