Todos deberían estar familiarizados con el servlet. Lo revisaré hoy. Si hay algo mal escrito o incorrecto, espero que los internautas lo critiquen y corrijan. Hoy solo discutiremos los dos métodos de obtención y publicación. Hay muchas diferencias entre ellos, por lo que los métodos de codificación serán diferentes. El problema confuso de la publicación es más fácil de resolver. entenderlo. Los buenos principios de la memoria y las diferencias entre ellos.
Tanto el método get como el método post se basan en el protocolo http. Su propósito es proporcionar un método para publicar y recibir páginas html. El cliente inicia una solicitud y el servidor responde.
Un mensaje de solicitud completo incluye: una línea de solicitud, varios encabezados de mensaje y el contenido de la entidad de solicitud
La línea de solicitud incluye el método de solicitud (obtener o publicar), ruta del recurso (la dirección a la que se accederá), número de versión http (http1.1)
Varios encabezados de mensajes (por ejemplo, incluida la información del núcleo del navegador (usuario-agente), quién abrió su página principal (consultar), etc.
Hay una línea en blanco en el contenido de la entidad de solicitud y el encabezado del mensaje para separar el encabezado del mensaje y el contenido de la entidad de solicitud. El usuario envía el contenido de la entidad.
Un mensaje de respuesta completo incluye: línea de estado, uno o más encabezados de respuesta, una línea en blanco y entidad de respuesta.
Línea de estado: incluido el número de versión del protocolo http, el código de estado y la descripción del motivo
Códigos de estado comunes: 200 normal
404: El recurso solicitado no existe
500: error interno del servidor
Después de hablar brevemente sobre http, podemos presentar las diferencias entre los métodos get y post.
obtener método:
El método get coloca el contenido enviado al final de la URL y la longitud es limitada. Tanto la publicación como la obtención se basan en el protocolo http. El método get lo coloca en la línea de solicitud porque sus parámetros están en la URL. método de publicación Se coloca en el contenido de la entidad de solicitud. El método de publicación es relativamente seguro. El navegador no retiene la información de la caché, mientras que el método de obtención conserva la caché. Puede ver el contenido enviado desde el historial del navegador y el método de obtención. tiene un límite en la longitud del puesto no.
Precisamente porque las posiciones del protocolo http al enviar datos en el método get y el método post son diferentes, los métodos de codificación para resolverlos también serán diferentes.
Resolviendo el problema de los caracteres confusos en el modo publicación:
En el método de servicio del servlet (el método doGet o doPost también es aceptable), establezca la codificación de la solicitud en UTF-8
req.setCharacterEncoding("UTF-8");
De esta manera, no hay ningún problema con la codificación de la solicitud y luego la codificación de la respuesta también se establece en UTF-8;
resp.setCharacterEncoding("UTF-8");
De esta manera, no hay problema con la codificación de la respuesta, pero después de escribirla así, aún puede haber problemas en el navegador, porque el navegador no sabe cuál es su formato de codificación, por lo que lo muestra de acuerdo con el El formato predeterminado del navegador, por lo que Para configurar el método de codificación para la visualización del navegador en UTF-8, la declaración es la siguiente:
resp.setContextType("text/html;charset=utf-8");
Al mismo tiempo, también debe asegurarse de que la codificación de sus herramientas de desarrollo sea coherente con la codificación del proyecto; de lo contrario, pueden aparecer caracteres confusos. Aquí tomamos UTF-8 como ejemplo.
Resolviendo el problema de caracteres confusos en el método get:
Además de las operaciones anteriores, el método get también necesita agregar una oración al archivo de configuración server.xml en el directorio conf de Tomcat. Busque la siguiente oración.
<Conector puerto="8080" protocolo="HTTP/1.1" conexiónTimeout="20000" redirigirPort="8443" />
Después de la modificación, es
<Puerto del conector="8080" protocolo="HTTP/1.1" conexiónTimeout="20000" redirigirPort="8443" userBodyEncodingForURI="true" />
Este método de modificación es más flexible y permite que el formato de codificación de la URL sea el mismo que el formato de codificación de la página, o se puede configurar en un formato fijo, como
<Puerto del conector="8080" protocolo="HTTP/1.1" conexiónTimeout="20000" redirigirPort="8443" EncodingForURI="UTF-8" />
De esta manera, básicamente no habrá problemas. Si aún hay problemas, debe usar el método en String para cambiar los caracteres confusos en la página al formato que desee. Sin embargo, si los métodos anteriores son correctos, utilice este método. No funcionará. ¿Cómo podría usarse?
Además de las operaciones anteriores, el formato de codificación de la base de datos también debe configurarse como el mismo que el del proyecto. Aquí se cambia a UTF-8, la escritura es aproximada y se han omitido muchas cosas. pero debería ser suficiente para resolver el método de codificación de servlet.
Puede usar js al llamar, como por ejemplo:
function ceshi() {window.location.href = "UserServlet?uname=zhangsan&realname=" + encodeURIComponent("Hola a todos");}
De esta manera, los caracteres chinos Hola a todos ya no se mostrarán en la barra de direcciones (vincule esta oración al botón de enviar) y podrá enviarla al servlet correspondiente. Este método para resolver caracteres confusos también se aplica a jsp.
Por cierto, tengo que hablar sobre algo relacionado con los servlets, es decir, reenviar y redirigir. Reenviar solo puede saltar al proyecto actual y redirigir puede saltar al exterior. Por supuesto, solo hablaré de otras diferencias. Permítanme hablar sobre algo que creo que es importante, es decir, no importa cuál se use, después de escribir hacia adelante y redirigir, asegúrese de agregar return. De lo contrario, las siguientes declaraciones aún se ejecutarán después de agregar return. declaraciones Se informará un error que impide que la misma página salte varias veces. Los internautas a quienes no les gustó cometieron un error por error, gracias por su cooperación y gracias a los internautas que me ayudaron a corregir mis errores, porque de esta manera seguiré mejorando, les agradezco sinceramente.