En la etapa inicial de aprendizaje de JavaWeb, todos encontrarán los métodos doGet y doPost en HttpServlet. Leí "Head First Servlets & JSP" hace dos días y vi que habla sobre la diferencia entre solicitudes de obtención y solicitudes de publicación en Servlets. Lo resumo de la siguiente manera:
1: El tamaño de los datos solicitados es diferente.
Debido a que los datos solicitados por get se agregan a la URL y el tamaño de los datos de la URL generalmente no puede exceder los 2K, existe un límite para el tamaño de los datos que utilizan el método de solicitud get. El método de solicitud posterior coloca los datos en el cuerpo del mensaje, por lo que, en teoría, no hay límite en la cantidad de datos. (Pero no puede ser demasiado grande en funcionamiento real)
2: La seguridad es diferente
Debido a que los datos solicitados por get se agregan a la URL, los usuarios externos pueden verlos fácilmente. Desde esta perspectiva, no es seguro. El método post coloca la solicitud en el cuerpo del mensaje y no se mostrará directamente en la URL, por lo que desde esta perspectiva los datos estarán más seguros.
3: creación de marcadores
Las solicitudes de obtención pueden crear marcadores; las solicitudes de publicación no. Por ejemplo: supongamos que tiene una página que permite a los usuarios especificar reglas de búsqueda. Es posible que el usuario regrese una semana después y desee obtener los datos originales, pero en este momento hay datos nuevos en el servidor.
4: Uso de métodos
get se utiliza para obtener algo, simplemente una adquisición, sin realizar ningún cambio en el servidor. Publicar significa que el usuario envía datos para su procesamiento y puede modificar los datos en el servidor.
5: ¿La solicitud es idempotente?
La solicitud de obtención es idempotente, simplemente obtiene algo y no modifica el contenido en el servidor. Se puede realizar varias veces sin efectos secundarios negativos. La publicación no es idempotente y los datos enviados en el cuerpo de la publicación pueden usarse para transacciones irreversibles. Entonces, desde esta perspectiva, debes usar la función doPost() con precaución.
Si no se especifica método="POST" en el formulario, se utilizará de forma predeterminada una solicitud HTTP GET. Es decir, el estado predeterminado es llamar a la solicitud de obtención.
En la etapa inicial de aprendizaje de JavaWeb, todos encontrarán los métodos doGet y doPost en HttpServlet.
(1) método doGet: maneja principalmente solicitudes Get en Http (2) método doPost: maneja principalmente solicitudes Post en Http
Entonces, ¿cuál es la diferencia entre obtener solicitud y publicar solicitud?
(1) get tiene solo una secuencia. Los parámetros se agregan a la URL. La cantidad de parámetros es estrictamente limitada y solo pueden ser cadenas. Por ejemplo, http://localhost:8888/javaweb/getServlet?name=123.
(2) Los parámetros de la publicación se pasan a través de otra secuencia, no a través de la URL, por lo que puede ser muy grande y también se pueden pasar datos binarios, como la carga de archivos.
Cuándo utilizar los métodos doGet y doPost:
1. Para el servlet enviado a través del formulario, vea si el método del formulario es obtener o publicar.
2. Se accede al servlet a través del enlace <a href...>, doGet
3. Escriba la dirección del servlet directamente en la barra de direcciones de IE, doGet