Inicio rápido de javaweb para los principales trucos de los programadores

¡Acostúmbrate a escribir juntos! Este es el noveno día de mi participación en el "Nuggets Daily New Plan · April Update Challenge", haz clic para ver los detalles del evento .

Este es un artículo especial sobre javaweb, que es la habilidad práctica básica que tienen los programadores cuando ingresan a la empresa, como sistemas de administración general, centros comerciales, bibliotecas, etc. Este artículo cubre las operaciones básicas de MySQL, el diseño de la base de datos MySQL y las operaciones de tablas múltiples, JDBC, conceptos básicos de Maven, HTML y CSS, JavaScript, protocolo HTTP, servidor web-Tomcat, Servlet, solicitud y respuesta, tecnología de sesión y JSP, filtros y oyentes, etc..

java web

Podemos dividir y explicar javaweb, que básicamente se divide en dos partes: java y web.Java se refiere a nuestro lenguaje java, y web significa el significado de las páginas web, que podemos proporcionar para el acceso externo. Javaweb es una base imprescindible para el desarrollo de Java. Índice de conocimiento

  • Introducción a java web
  • Categorías de Introducción a la Arquitectura
  • clasificación web
  • comunicación web

1 Introducción a java web

Java webEs una B\Simplementación técnica de aplicaciones web basadas en la arquitectura (navegador\servidor).

1.1 Categorías de arquitectura

1.1.1 Arquitectura C/S

Client / Server,客户端和服务器端,用户需要安装专门客户端程序。(王者荣耀、微信)
复制代码

1.1.2 Arquitectura B/S

Browser / Server,浏览器和服务器端,不需要安装专门客户端程序,浏览器是操作系统内置。淘宝网页版、京东网页版)
复制代码

1.1.3 La diferencia entre la arquitectura C/S y B/S

C/SLa ventaja es que tiene su propio cliente, por lo que su seguridad y estabilidad son altas.

 缺点是需要安装专用的客户端软件、需要经常更新,维护,对客户的操作系统一般也会有限制。

就像是你们在打王者荣耀的时候需要下载,更新,不同的系统玩的区都不一样,这个就是不同操作系统的限制
复制代码

B/SLa ventaja es que no es necesario instalar ningún software especial. Siempre que tenga una computadora o un teléfono móvil con acceso a Internet, puede usarlo.

2 clasificación web

2.1 Sitio web estático

Se basa en HTMLpáginas estáticas. Las páginas estáticas solo pueden desempeñar el papel de publicación de información, solo pueden proporcionar navegación, los datos no se modifican, no tienen la capacidad de interactuar.

2.2 Sitio web dinámico

Dinámico significa que el sitio web que ve el usuario se está moviendo, lo que significa que los datos del usuario que visita el sitio web son diferentes con el cambio del programa. Lo que debemos hacer como desarrollo de Java es este tipo de sitio web dinámico.

3 comunicación web

Como se mencionó anteriormente, lo que necesitamos ver es un sitio web en movimiento, entonces, ¿cómo vamos a visitar y encontrar un sitio web? Miremos una imagen

imagen

Uno de sus procesos es

1. 浏览器向服务器发送请求

2. Web服务器接受请求

3. 将请求提交给Servlet引擎

4. Servlet引擎调用Service方法

5. 返回响应给客户端(相应的代码)

   Servlet是整个JavaWeb技术的核心,这个我们会在第三章具体去介绍他是一个什么东西,我们知道处理是通过我们的Servlet来处理的,那我们通信是怎么通信的呢,是如何与浏览器进行交流的呢?这个就是通过我们http协议,通过它的请求响应的机制进行交流的请求一次响应一次,先有请求后有响应  	
复制代码

3.1 protocolo http

3.1.1 ¿Qué es el protocolo HTTP?

超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种协议,所有web都必须遵守的标准; (属于应用层协议)
复制代码

3.1.2 El papel del protocolo HTTP

HTTP作用:规范了浏览器和服务器的数据交互

特点:简单快速(浏览器端向服务器请求服务的时候,只需要传送请求的方法和路径。请求的方法有:GET、HEAD、POST,每种方法规定了客户与服务器联系的类型不同,由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。)

灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

无连接:浏览器端知道服务器是谁,服务器不知道浏览器端是谁,服务端只要看到了请求,就响应请求,响应完了就断开连接。这样可以省时间。而且每次只处理一个请求。

无状态:HTTP协议是无状态的协议。无状态是指协议对于事务处理没有记忆能力,缺少记忆状态意味着如果后面要后续处理前面处理过的信息,必须重新处理。
复制代码

Proceso de interacción del navegador y el servidor: el navegador envía una solicitud al servidor y el servidor procesa la respuesta de la solicitud. Como desarrolladores, a menudo nos ocupamos de solicitudes y respuestas. Las categorías de solicitudes y respuestas son

请求:请求行,请求头,请求体

响应:响应行,响应头,响应体
复制代码

Hablemos de la solicitud y la respuesta en detalle a continuación. Para los estudiantes de base cero, si comprende el contenido de la solicitud y la respuesta, no es necesario que domine los requisitos.

3.2 Sección de solicitud

Nuestra solicitud se divide en línea de solicitud, encabezado de solicitud, cuerpo de solicitud

tu_14-1639015195812

Podemos ver dicha solicitud directamente abriendo la página con F12 en el navegador

imagen-20211209102601144

3.2.1 Línea de solicitud

【请求行】
POST /myApp/success.html HTTP/1.1
复制代码

Nuestra línea de solicitud se divide en tres partes

请求方式
GET:明文传输, 不安全,参数跟在请求路径后面,对请求参数大小有限制, 
POST: 暗文传输,安全一些,请求参数在请求体里,对请求参数大小没有限制
URI:统一资源标识符(即:去掉协议和IP地址和端口号部分)
协议版本:HTTP/1.1
复制代码

3.2.1 Encabezados de solicitud

【请求头】
Accept: text/html, application/xhtml+xml, */*
X-HttpWatch-RID: 37569-10012
Referer: http://localhost:8080/myApp/login.html
Accept-Language: zh-Hans-CN,zh-Hans;q=0.5
User-Agent: Mozilla/5.0 (MSIE 9.0; qdesk 2.4.1266.203; Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 27
Connection: Keep-Alive
Cache-Control: no-cache
复制代码

Estos son los parámetros en el encabezado de la solicitud, que existen en forma de pares clave-valor. Su función principal es que el navegador le diga al servidor su propia configuración.

Accept:浏览器可接受的MIME类型 ,告诉服务器客户端能接收什么样类型的文件。
User-Agent:浏览器信息.(浏览器类型, 浏览器的版本....)
Accept-Charset:浏览器通过这个头告诉服务器,它支持哪种字符集
Content-Length:表示请求参数的长度 
Host:初始URL中的主机和端口 
Referrer:从哪里里来的(之前是哪个资源)、防盗链  
Content-Type:内容类型,告诉服务器,浏览器传输数据的MIME类型,文件传输的类型,application/x-www-form-urlencoded . 
Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip 
Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接 )
Cookie:这是最重要的请求头信息之一(会话技术, 后面会有专门的时间来讲的) Date:Date: Mon, 22Aug 2011 01:55:39 GMT请求时间GMT
复制代码

3.2.1 Cuerpo de la solicitud

【请求体】
username=admin&password=123456
复制代码

La solicitud de obtención no tiene cuerpo de solicitud, solo cuando el método de solicitud es publicación, hay un cuerpo de solicitud. Son los datos que enviamos al backend

3.3 Sección de respuesta

Nuestra respuesta se divide en línea de respuesta, encabezado de respuesta, cuerpo de respuesta

3.3.1 Línea de respuesta

HTTP/1.1 200
复制代码

Nuestra línea de solicitud se divide en dos partes : protocolo/versión y código de estado de respuesta

200:正常,成功
302:重定向
304:表示客户机缓存的版本是最新的,客户机可以继续使用它,无需到服务器请求. 读取缓存  
403:请求被禁止,常发生于跨域请求(没有权限去请求进入某个服务器)
404:客户端错误(一般是路径写错了,没有这个资源)  **请求路径不存在,请求地址写错了
406:请求与响应不一致  请求和响应是的content-Type设置不一样
500:服务器内部错误(程序运行出错了  java代码运行报错)
复制代码

3.3.2 Encabezados de respuesta

Los encabezados key:vauede respuesta existen y puede haber múltiples valuesituaciones. El servidor le indica al navegador qué hacer y qué configurar.

【响应头】
Accept-Ranges: bytes
ETag: W/"143-1557909081579"
Last-Modified: Wed, 15 May 2019 08:31:21 GMT
Content-Type: text/html
Content-Length: 143
Date: Sun, 08 Dec 2021 02:20:04 GMT
复制代码

A continuación miro los encabezados de respuesta comunes

- Content-Type: text/html; charset=UTF-8; 设置服务器发送的内容的MIME类型,文件下载时候
- Refresh: 5;url=http://www.baidu.com 指示客户端刷新频率。单位是秒  eg: 告诉浏览器5s之后跳转到百度
- Content-Disposition: attachment; filename=a.jpg  指示客户端(浏览器)下载文件 
- Content-Length:80 告诉浏览器正文的长度
- Server:apachetomcat 服务器的类型
- Content-Encoding: gzip服务器发送的数据采用的压缩类型
- Set-Cookie:SS=Q0=5Lb_nQ;path=/search服务器端发送的Cookie
- Cache-Control: no-cache (1.1)  
- Pragma: no-cache  (1.0)  表示告诉客户端不要使用缓存
- Connection:close/Keep-Alive   
- Date:Tue, 11 Jul 2000 18:23:51 GMT
复制代码

3.3.3 Cuerpo de respuesta

El cuerpo de la respuesta es el contenido que se muestra en la página, también podemos verlo a través del navegador presionando F12, que es el código fuente de nuestra página.

【响应体】
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    Success
</body>
</html>
复制代码

Supongo que te gusta

Origin juejin.im/post/7085261470501437477
Recomendado
Clasificación