Sistema de gestión basado en Servlet (incluye código fuente del servidor + base de datos)

enlace de descarga de datos

introducir

Una versión concisa del sistema de gestión basado en el marco Servlet   ;

Realizar  login  ,  registro  ,  alta  ,  baja  ,  modificación  y  consulta  ;

Puede continuar mejorando y agregando front-end, verificación, otras funciones, etc.;

Se puede utilizar como  modelo básico para ejercicios de desarrollo de proyectos Servlet  ;

Diseño del plan de estudios  ,  base de desarrollo del diseño de graduación  ;

Cualquier marco complejo es una combinación y extensión de conocimiento simple, y aprender los conceptos básicos es lo más importante;

Este proyecto es simple, fácil de entender los principios básicos y sienta las bases para el desarrollo de proyectos complejos como Servlet, SSH y SSM.

Preparación ambiental

Plataforma de desarrollo: Idea 2019

Base de datos: MySQL 5.0.22

Servidor: Tomcat 9.0.37

Nota: Es necesario instalar la plataforma de desarrollo IDEA, la base de datos MySQL y el servidor Tomcat. Es posible que las versiones no sean exactamente iguales. Solo haga un buen trabajo en la configuración adaptativa de la versión.

estructura del proyecto

1. Base de datos y archivos de código Java 

Introduce una descripción de la imagen

2. Jsp y otro código front-end 

Introduce una descripción de la imagen

3.Configuración y operación del servidor Tomcat

Introduce una descripción de la imagen

4. Base de datos MySQL 

Introduce una descripción de la imagen

Fundamental

1. Conceptos relacionados

Servlet es una tecnología para desarrollar páginas web dinámicas, que se utiliza para navegar y modificar datos de forma interactiva y generar contenido web dinámico. Hoy en día, Servlet rara vez se usa en el desarrollo web de Java para desarrollar aplicaciones web, y más es el desarrollo de marco integrado. De hecho, la mayoría de los marcos se encapsulan en función de herramientas básicas, como Struts es la encapsulación de servlet y filtro, Hibernate es la encapsulación de JDBC, etc. Por lo tanto, no importa qué marco aprenda, primero debe comprender los conocimientos básicos en profundidad, para tener una comprensión racional y una solución a los problemas que surgen en el marco.

2. Fundamentos

2.1 Flujo de trabajo

  1. El cliente web envía una solicitud Http al contenedor Servlet (Tomcat)

  2. El contenedor de servlet recibe solicitudes del cliente web

  3. El contenedor Servlet crea un objeto HttpRequest y encapsula la información solicitada por el cliente web en este objeto.

  4. El contenedor de servlet crea un objeto HttpResponse

  5. El contenedor de Servlet llama al método de servicio del objeto HttpServlet y pasa el objeto HttpRequest y el objeto HttpResponse como parámetros al objeto HttpServlet.

  6. HttpServlet llama a métodos relacionados del objeto HttpRequest para obtener información de solicitud Http.

  7. HttpServlet llama a los métodos relevantes del objeto HttpResponse para generar datos de respuesta.

  8. El contenedor de Servlet envía el resultado de la respuesta del HttpServlet al Cliente Web.

Introduce una descripción de la imagen

Introduce una descripción de la imagen

2.2 Proceso de solicitud de trámite

  1. El usuario hace clic en un enlace, que lleva a un servlet en lugar de a una página estática.

  2. El contenedor "ve" que la solicitud es un Servlet, por lo que crea dos objetos, HttpServletRequest y HttpServletResponse.

  3. El contenedor encuentra el Servlet correcto de acuerdo con la URL en la solicitud, crea o asigna un subproceso para la solicitud y pasa los objetos de solicitud y respuesta al subproceso del Servlet.

  4. El contenedor llama al método service() del servlet. Según el tipo de solicitud, el método service() llama al método doGet() o doPost(). Esto supone que se llama al método doGet().

  5. El método doGet() genera una página dinámica y "rellena" esta página en el objeto de respuesta. Cabe señalar que el contenedor también tiene una referencia al objeto de respuesta.

  6. Cuando finaliza el subproceso, el contenedor convierte el objeto de respuesta en una respuesta HTTP, lo devuelve al cliente y elimina los objetos de solicitud y respuesta.

2.3 Principio de funcionamiento

​ 1. Primero, explique brevemente el proceso de recepción y respuesta del Servlet a las solicitudes de los clientes. Primero, el cliente envía una solicitud y el Servlet llama al método service() para responder a la solicitud. Se puede ver en el código fuente que el método de solicitud en el método service() Después de hacer coincidir, elija llamar a doGet, doPost y otros métodos, y luego ingrese el método correspondiente para llamar al método de la capa lógica para dar la respuesta al cliente. No existen métodos como doGet(), doPost(), etc., en la interfaz de Servlet y GenericServlet, estos métodos están definidos en HttpServlet, pero todos devuelven información de error, por lo tanto, cada vez que definamos un Servlet, debemos implementar doGet o doPost, etc. estos métodos.

​ 2. Cada Servlet personalizado debe implementar la interfaz de Servlet. Hay cinco métodos definidos en la interfaz de Servlet, y los tres métodos más importantes involucran el ciclo de vida del Servlet, que son init() mencionado anteriormente, service(), destroy () método. GenericServlet es un Servlet genérico, no específico de ningún protocolo, que implementa la interfaz del Servlet. HttpServlet hereda de GenericServlet, por lo que HttpServlet también implementa la interfaz de Servlet. Entonces, cuando definimos Servlet, solo necesitamos heredar HttpServlet.

3. La interfaz Servlet y GenericServlet no son específicos de ningún protocolo, mientras que HttpServlet es una clase específica del protocolo HTTP, por lo que el método service() se implementa en HttpServlet, y la solicitud ServletRequest y ServletResponse se fuerzan a HttpRequest y HttpResponse.

2.4 Ciclo de vida del servlet

El programa de servlet es invocado por el servidor web, y el servidor web implementa la gestión del ciclo de vida del servlet. Cuando su aplicación carga y usa un Servlet, ocurrirá una serie de eventos desde la inicialización hasta la destrucción del Servlet.Estos eventos se denominan eventos (o métodos) del ciclo de vida del Servlet.

El ciclo de vida del Servlet se puede resumir como:

Carga de servlet ---> creación de instancias ---> servicio ---> destrucción

El ciclo de vida del servlet define cómo se carga e inicializa un servlet y cómo recibe solicitudes, responde a solicitudes y proporciona servicios.

Introduce una descripción de la imagen

1. Crear una instancia de Servlet 

El contenedor web se encarga de cargar el Servlet, cuando se inicia el contenedor web o cuando se usa el Servlet por primera vez, el contenedor se encargará de crear la instancia de Servlet, pero el usuario debe especificar la ubicación del Servlet a través del descriptor de implementación (web.xml), que es el nombre de la clase donde reside el Servlet. Después de una carga exitosa, el contenedor web instanciará el Servlet a través de la reflexión. 

2. El contenedor WEB llama al método init() del Servlet para inicializar el Servlet. 

Después de instanciar el Servlet, el contenedor del Servlet llamará al método init() para inicializar el objeto, principalmente para permitir que el objeto Servlet complete algunas tareas antes de procesar solicitudes de los clientes Trabajo de inicialización, por ejemplo, establecer una conexión a la base de datos, obtener información de configuración, etc. Para cada instancia de Servlet, el método init() solo se puede llamar una vez. El método init() tiene un parámetro de tipo ServletConfig, y el contenedor de Servlet pasa información de configuración al Servlet a través de este parámetro. El Servlet utiliza el objeto ServletConfig para obtener los parámetros de inicialización proporcionados en forma de pares de nombre y valor a partir de la información de configuración de la aplicación web. Además, en el Servlet, el objeto ServletContext que describe el entorno operativo del Servlet también se puede obtener a través del objeto ServletConfig Con este objeto, el Servlet puede comunicarse con su contenedor de Servlet. No importa cuántos clientes accedan al servlet, init() no se ejecutará repetidamente. 

3. Después de inicializar el Servlet, siempre existirá en el contenedor, service() responde a la solicitud del cliente 

① Si el cliente envía una solicitud GET, el contenedor llama al método doGet del Servlet para procesar y responder a la solicitud 

② Si el el cliente envía una solicitud POST, el contenedor llama al Servlet El método doPost procesa y responde a la solicitud 

③ o usa uniformemente el método service() para procesar y responder a las solicitudes de los usuarios

service() es el núcleo de Servlet, encargado de responder a las solicitudes de los clientes. Siempre que un cliente solicite un objeto HttpServlet, se llamará al método Service() del objeto y se pasarán a este método como parámetros un objeto de "solicitud" (ServletRequest) y un objeto de "respuesta" (ServletResponse). El método Service() ya existe en HttpServlet. La función de servicio predeterminada es llamar a la función do correspondiente al método de la solicitud HTTP. Cabe señalar que antes de que el contenedor llame al método service(), debe asegurarse de que el método init() se complete correctamente. El contenedor construirá un objeto de solicitud (tipo ServletRequest) que representa la información de solicitud del cliente y un objeto de respuesta (tipo ServletResponse) para responder al cliente como parámetros del método service(). En el método de servicio (), el objeto Servlet obtiene la información relevante y solicita información del cliente a través del objeto ServletRequest y, después de procesar la solicitud, llama al método del objeto ServletResponse para configurar la información de respuesta. 

4. Cuando el contenedor WEB decide destruir el Servlet, primero llama al método destroy() del Servlet y, por lo general, destruye el Servlet antes de cerrar la aplicación web.

destroy() se ejecuta solo una vez, y este método se ejecuta cuando el servidor se detiene y el Servlet se descarga. Cuando el contenedor detecta que un objeto de servlet debe eliminarse del servicio, el contenedor llama al método destroy() del objeto para que el objeto de servlet pueda liberar los recursos que usa y guardar datos en dispositivos de almacenamiento persistentes, por ejemplo, Guardar los datos en la memoria. a la base de datos, cerrar la conexión a la base de datos, etc. Cuando se necesita liberar la memoria o se cierra el contenedor, el contenedor llamará al método destroy() del objeto Servlet. Antes de que el contenedor Servlet llame al método destroy(), si hay otros subprocesos ejecutándose en el método service(), el contenedor esperará a que estos subprocesos terminen de ejecutarse o esperará a que llegue el valor de tiempo de espera establecido por el servidor. Una vez que se llama al método destroy() del objeto Servlet, el contenedor no enviará otras solicitudes al objeto. Si se necesita el Servlet para servir al cliente nuevamente, el contenedor regenerará un objeto Servlet para manejar la solicitud del cliente. Después de llamar al método destroy(), el contenedor liberará el objeto Servlet y, en el tiempo siguiente, el recolector de basura de Java reciclará el objeto. 

Nota 

① En circunstancias normales, el Servlet solo se inicializará una vez, el servicio de procesamiento se llamará varias veces y la destrucción solo se llamará una vez; pero si un Servlet no se usa durante mucho tiempo, se destruirá automáticamente por el contenedor, y si necesita ser utilizado nuevamente La operación de inicialización se reinicializará cuando llegue el momento, es decir, en casos especiales, la inicialización se puede realizar varias veces, y la destrucción también se puede realizar varias veces . 

② Después de crear la instancia de servlet, antes de que el servlet pueda proporcionar servicios para las solicitudes de los clientes, el contenedor llamará al método init() en la instancia de servlet. Si tiene un código de inicialización, debe anular el método init() de la clase servlet; de lo contrario, se llamará al método init() de GenericServlet. Y para cada solicitud de cliente (no importa quién, si es la misma persona o no, solo para la solicitud), el contenedor creará un nuevo par de objetos de solicitud y respuesta, y creará un nuevo hilo/pila. Nunca habrá varias instancias de una clase de servlet, excepto en un caso especial (SingleThreadModel).

③ Los cuatro ciclos del ciclo de vida del servlet se resumen de la siguiente manera: 
a. El proceso de creación de instancias y carga del servlet, nuevo 

b. Inicialización de init (ServletConfig). 

c. Para procesar la solicitud, llame a los métodos service, doget y dopost del servlet para pasar la solicitud y la respuesta como parámetros. 

D. Salga del servicio y llame al método destroy para liberar recursos.

visualización de página

1. Página de inicio de sesión

Introduce una descripción de la imagen

2. Página de registro 

Introduce una descripción de la imagen

3. Página de inicio 

Introduce una descripción de la imagen

4. Mostrar página

Introduce una descripción de la imagen

5. Agregar nueva página 

Introduce una descripción de la imagen

6. Eliminar página 

Introduce una descripción de la imagen

7. Modificar la página 

Introduce una descripción de la imagen

Supongo que te gusta

Origin blog.csdn.net/tianqiquan/article/details/132339037
Recomendado
Clasificación