Arquitectura de programación (07): Desarrollo web de JavaEE

Código fuente de este artículo: GitHub · haga clic aquí || GitEE · haga clic aquí

1. Conceptos básicos

Arquitectura de programación (07): Desarrollo web de JavaEE

1. Arquitectura CS y BS

Patrón de arquitectura CS

El modo cliente / servidor requiere tanto escribir programas del lado del servidor como desarrollar programas del lado del cliente. Cuando se actualiza el software, es necesario actualizar tanto el lado del cliente como el del servidor. El modo general es más complicado que la arquitectura BS, pero es más seguro alto.

Modelo de arquitectura B / S

Es decir, el navegador / servidor (navegador / servidor), solo necesita escribir programas del lado del servidor, y la interfaz del navegador sirve como entrada al servidor al que se accede. La arquitectura es relativamente simple y se puede iterar rápidamente, pero la seguridad es deficiente.

2. Mecanismo de comunicación por enchufe

Protocolo TCP / IP

El Protocolo de control de transmisión / Protocolo de Internet se refiere a un grupo de protocolos que puede realizar la transmisión de información entre múltiples redes diferentes. El protocolo TCP / IP no solo se refiere a los dos protocolos de TCP e IP, sino que se refiere a un clúster de protocolos compuesto por FTP, SMTP, TCP, UDP, IP y otros protocolos, solo porque el protocolo TCP y el protocolo IP en el protocolo TCP / IP El más representativo, por eso se denomina protocolo TCP / IP.

Toma de corriente

La abstracción de los puntos finales para la comunicación bidireccional entre procesos de aplicación en diferentes hosts de la red. Un socket es un extremo del proceso de comunicación en la red y proporciona un mecanismo para que los procesos de la capa de aplicación intercambien datos utilizando protocolos de red. Por lo general, el que recibe los datos de la solicitud y realiza el procesamiento comercial se llama servidor o ServerSocket, y el que envía la solicitud y recibe el resultado del procesamiento se llama cliente.

2. Protocolo HTTP

1 、 Http 和 Https

Protocolo http

El protocolo de transferencia de hipertexto HTTP es un protocolo de transferencia que se utiliza para transferir hipertexto desde un servidor World Wide Web a un navegador local. Transfiere datos basados ​​en el protocolo de comunicación TCP / IP: archivos HTML, imágenes, datos de consulta, etc. El protocolo HTTP se basa en el modelo de arquitectura cliente-servidor. El navegador, como cliente HTTP, envía una solicitud al servidor, es decir, el servidor WEB a través de la URL. Una vez que el servidor web procesa la solicitud de acuerdo con la solicitud recibida, envía un mensaje de respuesta al cliente.

Características del protocolo: simple, rápido, flexible, sin conexión, sin estado y compatible con el modo cliente / servidor.

Protocolo http

El canal HTTP con la seguridad como criterio es la versión segura de HTTP. Se agrega una capa SSL a la solicitud HTTP. La base de seguridad de HTTPS es SSL, por lo que se requiere SSL para los detalles de cifrado. En pocas palabras, el protocolo HTTPS es un protocolo de red construido por el protocolo SSL + HTTP que se puede utilizar para la transmisión encriptada y la autenticación de identidad, que es más seguro que el protocolo http. La función principal del protocolo HTTPS se puede dividir en dos tipos: uno es establecer un canal de seguridad de la información para garantizar la seguridad de la transmisión de datos; el otro es confirmar la autenticidad del sitio web.

La diferencia entre Https y Http

Certificado de seguridad: el protocolo Https requiere que una CA solicite un certificado. Generalmente, hay menos certificados gratuitos, por lo que se requiere una cierta tarifa.

Transmisión de datos: Http es un protocolo de transmisión de hipertexto, la información se transmite en texto plano y https es un protocolo de transmisión cifrado SSL seguro.

Método de conexión: Http y Https utilizan métodos de conexión completamente diferentes, y los puertos utilizados son diferentes, el primero es 80 y el segundo es 443.

2. Obtener y publicar solicitudes

Lado del navegador

Desde la perspectiva del navegador, la diferencia entre estas dos solicitudes: método GET para leer recursos, como llegar a una página estática, incluso si varias lecturas no afectarán los datos de acceso, también se denomina solicitud "idempotente". El método POST define el formulario en la página. Al enviar el formulario, se enviarán los datos al servidor. En la mayoría de los casos, se generarán datos. Por ejemplo, la interfaz de uso común para guardar datos no es una operación "idempotente". No idempotente significa que no puede hacerlo varias veces a voluntad llevado a cabo.

Interfaz de servicio

Esto se refiere al tipo de solicitud enviada usando el programa Ajax para solicitar la interfaz de servicio. U otras herramientas de solicitud Http, y hay casos en los que se realizan solicitudes entre varias interfaces Feign en microservicios. En este caso, cuando la interfaz envía una solicitud, hay relativamente pocas restricciones. Por ejemplo, las interfaces de estilo REST suelen utilizar GET, POST, PUT y DELETE, y se utilizan varios métodos para obtener, crear, actualizar y eliminar recursos.

3. Dar la mano y mover el teléfono

Tres apretón de manos

Arquitectura de programación (07): Desarrollo web de JavaEE

El primer protocolo de enlace: el cliente inicia activamente una conexión de solicitud al servidor y envía SYN = 1 en el mensaje de solicitud. En este momento, el número de secuencia inicial seq = x se genera aleatoriamente. En este momento, el proceso del cliente entra en el estado de envío de sincronización SYN-SENT.

El segundo apretón de manos: después de recibir el mensaje de solicitud, el servidor confirma el SYN del cliente y, si la solicitud no es rechazada, envía un mensaje de confirmación. El mensaje debe ser ACK = 1, SYN = 1, y el número de confirmación es ack = x + 1. Al mismo tiempo, envía un paquete SYN seq = y. En este momento, el proceso del servidor entra en el estado de recepción síncrona SYN-RCVD.

El tercer apretón de manos: Después de que el cliente recibe la confirmación, debe confirmar al servidor el mensaje ACK = 1 y ack = y + 1. En este momento, se establece la conexión TCP y el cliente entra en el estado de conexión establecida ESTABLECIDO. Después de completar el protocolo de enlace de tres vías, el cliente y el servidor comienzan a transmitir datos.

Saludar cuatro veces

Arquitectura de programación (07): Desarrollo web de JavaEE

Primera oleada: El cliente envía un FIN final para cerrar activamente la transmisión de datos con el servidor, liberar la conexión y dejar de enviar datos, el encabezado del mensaje: FIN = 1, número de secuencia seq = u; luego el cliente ingresa a la terminación esperando 1 Estado FIN-WAIT-1.

La segunda ola: el servidor recibe este FIN y envía un mensaje de reconocimiento ACK = 1, confirmando que el número de secuencia recibido es el número de secuencia recibido + 1, es decir, ack = u + 1, y trae su propio número de secuencia seq = v, Al igual que SYN, un FIN ocupará un número de serie. De esta manera, el servidor informa al proceso de aplicación que el cliente no tiene datos para enviar. Si el servidor envía datos, el cliente aún quiere recibirlos. Este estado continuará por un período de tiempo, y el servidor entrará en el estado de espera cerrado CLOSE-WAIT. Después de recibir la solicitud de confirmación del servidor, el cliente ingresa al estado de terminación en espera 2 FIN-WAIT-2, esperando que el servidor envíe un mensaje de liberación de conexión.

Ola por tercera vez: el servidor envía un mensaje de liberación de conexión FIN = 1, ack = u + 1 al cliente. En este momento, el servidor todavía está en un estado medio cerrado y es posible que aún envíe algunos datos. En este momento, el número de secuencia es seq = w Entonces, el servidor entra en el estado de confirmación final LAST-ACK, esperando la confirmación del cliente.

Cuarta ola: después de recibir el mensaje de liberación de conexión del servidor, el cliente envía un acuse de recibo, ACK = 1, ack = w + 1, y el número de secuencia es seq = u + 1, por lo que el cliente ingresa al estado de tiempo de espera TIME- ESPERE. En este momento, la conexión TCP no se ha liberado y el estado CERRADO solo se puede ingresar después de que haya pasado la vida útil más larga del segmento de mensaje. MSL: La vida más larga del segmento de mensajes, generalmente 2 minutos. Cuando se libera la conexión TCP, la parte activa debe pasar 2MSL antes de ingresar al estado CERRADO, por lo que la parte activa cierra tarde.

Tres, componentes de servlet

El programa del lado del servidor escrito en Java tiene las características de ser independiente de plataforma y protocolo, su función principal es navegar y generar datos de forma interactiva y generar contenido Web dinámico. Con Servlet, puede recopilar información de usuario de formularios web, presentar registros de bases de datos u otras fuentes y crear páginas web de forma dinámica.

1. Implementación

Heredar HttpServlet, HttpServlet juega el papel de plantilla abstracta, método de plantilla: servido por el método service ();

Hereda la clase abstracta GenericServlet, donde el método de servicio es un método abstracto;

Implementar la interfaz Servlet, incluidos los métodos principales de init, getServletConfig, service, getServletInfo y destroy;

2. Ciclo de vida

Cargue y cree una instancia, inicialice init, service service, destroy: destroy.

3. Componentes básicos de la API

ServletConfig : Obtiene los parámetros de inicialización del servlet y el objeto servletContext;

ServletContext : comparte datos entre los recursos dinámicos de toda la aplicación web;

ServletRequest : encapsula la información de la solicitud Http y créala en el momento de la solicitud;

ServletResponse : encapsula la información de respuesta Http y créala cuando se solicite;

4. Reenvío y redireccionamiento

Reenvío: el control del salto de página en el lado del servidor;

Redirección: el servidor responde a la información de redirección y el lado del navegador redirige la página;

Arquitectura de programación (07): Desarrollo web de JavaEE

5 、 Cookie 与 Sesión

Mecanismo de cookies

Arquitectura de programación (07): Desarrollo web de JavaEE

La cookie en HTTP se usa generalmente para identificar la identidad del usuario, para el seguimiento de la sesión, y los datos almacenados en el terminal local del usuario generalmente están encriptados, y la información es almacenada temporal o permanentemente por la computadora cliente del usuario. Su estructura está compuesta por una clave y un valor. La respuesta del servidor se envía al navegador del cliente. Luego, el navegador del cliente guardará la cookie y la enviará al servidor la próxima vez que visite el servidor.

Sesión de sesión

Arquitectura de programación (07): Desarrollo web de JavaEE

Cuando el usuario salta entre las páginas web de la aplicación, las variables almacenadas en el objeto Session no se perderán, sino que siempre existirán en toda la sesión del usuario. Servlet puede guardar los datos que se deben compartir en una sesión en el objeto HttSession. Cuatro objetos de dominio: PageContext, ServletRequest, HttpSession, ServletContext.

6. Supervisar, filtrar, interceptar

Oyente

Los tres componentes principales de JavaWeb: Servlet, Listener y Filter.Listeners se refieren a componentes que monitorean los cambios en el estado de los objetos relacionados en la aplicación.

filtrar

Cuando el cliente solicita un servlet, primero ejecuta el filtro correspondiente, si el filtro pasa, hereda el servlet solicitado, si falla el filtro, no se ejecutará el servlet solicitado por el usuario. Los filtros pueden interceptar solicitudes y respuestas de forma dinámica.

Interceptador

El Interceptor en el marco de Spring es similar al filtro en el Servlet, que se usa principalmente para interceptar las solicitudes de los usuarios y tratarlas en consecuencia. Por ejemplo, el interceptor puede realizar la verificación de autorización, registrar la información de la solicitud y determinar si el usuario está conectado. El reenvío de solicitudes no realiza la interceptación ni el filtrado; la redirección realiza la interceptación y el filtrado.

Cuarto, el grupo de conexiones de la base de datos

1. Grupo de conexiones C3P0

C3P0 es un grupo de conexiones JDBC de código abierto. La aplicación inicializa la conexión de la base de datos de acuerdo con la configuración de C3P0 y puede recuperar automáticamente la función de conexiones inactivas.

2. Grupo de conexiones de druidas

El grupo de conexiones Druid nace para el monitoreo, potentes funciones de monitoreo integradas, las funciones de monitoreo no afectan el rendimiento. La función StatFilter incorporada puede recopilar la información de ejecución de la base de datos de acceso en el grupo de conexiones muy completo. El grupo de conexiones Druid tiene una página de monitoreo incorporada, que proporciona información de monitoreo muy completa, que puede diagnosticar rápidamente el cuello de botella del sistema. También es el grupo de conexiones más utilizado.

Cinco, ejecuta el servidor

1. Contenedor embarcadero

Jetty es un contenedor de servlets de código abierto, que proporciona un entorno de ejecución para contenedores web basados ​​en Java, como JSP y servlet. Jetty está escrito en lenguaje Java y su API se publica en forma de un conjunto de paquetes JAR. Los desarrolladores pueden crear una instancia del contenedor Jetty en un objeto, que puede proporcionar rápidamente conexiones de red y web para aplicaciones Java independientes.

2. Servidor Tomcat

El servidor Tomcat es un servidor de aplicaciones web gratuito y de código abierto. Es un servidor de aplicaciones liviano. Se usa comúnmente en sistemas pequeños y medianos y donde no hay muchos usuarios concurrentes. Es la primera opción para desarrollar y depurar programas JSP. Las dos operaciones más críticas para usar Tomcat: usar herramientas de desarrollo para conectarse a Tomcat e implementar aplicaciones web; empaquetar la aplicación para que se ejecute bajo el servicio Tomcat.

Seis, dirección de código fuente

GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile

Lectura recomendada: sistema de programación de acabado

Número de serie nombre del proyecto Dirección de GitHub Dirección GitEE Recomendado
01 Java describe patrones de diseño, algoritmos y estructuras de datos GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆☆☆
02 Fundamentos Java, concurrencia, orientado a objetos, desarrollo web GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆☆
03 Explicación detallada del caso del componente básico del microservicio SpringCloud GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆
04 Caso completo de arquitectura de microservicio SpringCloud GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆☆☆
05 Comenzando con la aplicación básica del marco SpringBoot a avanzado GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆☆
06 SpringBoot framework integra y desarrolla middleware común GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆☆☆
07 Caso básico de gestión de datos, distribución, diseño de arquitectura GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆☆☆
08 Grandes series de datos, almacenamiento, componentes, informática y otros marcos GitHub · haga clic aquí GitEE · Haga clic aquí ☆☆☆☆☆

Supongo que te gusta

Origin blog.51cto.com/14439672/2540763
Recomendado
Clasificación