Problema ilegible de jsp, la diferencia entre el envío de formularios get / post y la configuración del principio de codificación

El siguiente contenido es comprensión personal, espero señalar lo inapropiado

1. El principio de ejecución jsp;

Para resolver completamente el problema de codificación primero, necesita conocer el principio de ejecución de jsp. El principio de ejecución de jsp es una traducción + dos compilaciones; consulte la siguiente figura para obtener más detalles:
Inserte la descripción de la imagen aquí
aquí debe explicarse: Cuando
           jsp se traduce a .java , es traducido por el motor jsp del servidor Tomcat. Si se hace clic en la idea para ejecutarla; entonces el archivo fuente .java se generará en el directorio de su proyecto:
Inserte la descripción de la imagen aquí
la ruta de la computadora de todos es diferente, por lo que debe encontrarla usted mismo, generalmente debajo de su Ubicación de instalación de Tomcat; luego este proceso de traducción lo realiza el motor jsp en Tomcat; cuando abre el archivo fuente .java, puede encontrar que el contenido en .jsp está realmente traducido a out.write en la función _jspService ():

      out.write("\n");
      out.write("\n");
      out.write("<html>\n");
      out.write("  <head>\n");
      out.write("  </head>\n");
      out.write("<body>\n");
      out.write("    ");

//         response.setCharacterEncoding("ISO-8859-1");
         out.println("我是中文");
    
      out.write("\n");
      out.write("</body>\n");
      out.write("</html>");

2. Tipo de codificación jsp;

Hay 5 tipos comunes de codificación jsp;

  1. Codificación ISO-8859-1: el tamaño de la memoria es de 1 byte [0,2 ^ 8-1], no puede representar caracteres chinos, indicador: se puede entender con la tabla de códigos ASCLL;
  2. Codificación GB2312: dos bytes para representar caracteres chinos; compatible con la codificación ISO-8859-1;
  3. Codificación GBK: caracteres chinos expresados ​​en dos bytes; compatible con la codificación GB2312;
  4. Codificación Unicode: se utilizan 2 o 4 bytes para representar caracteres chinos, no es compatible con ninguna codificación;
  5. codificación utf-8: 1 byte para inglés y 3 bytes para chino; no es compatible con la codificación gb2312; utf-8 es una codificación de caracteres universal internacional, que a menudo se unifica como tipo de codificación utf-8, que también es el tipo de codificación más utilizado ;

3. Cinco métodos de codificación para resolver códigos confusos;

Cinco métodos de codificación comúnmente utilizados para resolver la codificación:

  1. Use request.setCharacterEncoding ("Tipo de codificación");
  2. Use pageEncoding = "Tipo de codificación"
  3. Utilice contentType = "tipo de codificación"
  4. Use response.setCharacterEncoding ("Tipo de codificación");
  5. Modifique el método de codificación URIEncoding en server.xml;

4. Los cinco métodos de codificación corresponden al alcance del principio de ejecución jsp;

Inserte la descripción de la imagen aquí

5. La prioridad de los cinco métodos de codificación en el rango correspondiente al principio de ejecución JSP;

  1. De jsp a servlet: pageEncoding> contentType;

  2. Al especificar la codificación del contenido de la respuesta del servidor: response.setCharacterEncoding> contentType> pageEncoding es el cuadro inferior en el cuadro del servidor del Título 4;
    (1) contentType> pageEncoding
    Inserte la descripción de la imagen aquí
    resultado de salida:
    Inserte la descripción de la imagen aquí
    (2) response.setCharacterEncoding> contentType> pageEncoding
    Inserte la descripción de la imagen aquí
    resultado de salida:
    Inserte la descripción de la imagen aquí


    Para request.setCharacterEncoding y URIEncoding en server.xml, estos dos métodos de codificación se explicarán después de que se entiendan los principios de get y post;

6. La diferencia entre obtener / publicar en el formulario;

  1. Obtener es obtener datos del servidor (el motor de búsqueda son los datos pasados ​​por el cliente con obtener, encontrar la página que coincide con el usuario y regresar al cliente. Por lo tanto, es obtener los datos del servidor), y no modificar el servidor. Por lo tanto, a menudo se usa para búsquedas y consultas; la publicación se usa para enviar datos al servidor, y es necesario modificar el servidor; por lo tanto, a menudo se usa para registro, modificación y carga; pero tenga en cuenta: todos están enviando datos a la base de datos, solo el método de envío. La diferencia se explica en el punto 3 a continuación;
  2. obtener seguridad <publicar seguridad;
  3. Get coloca cada campo en el formulario y su contenido en un par clave = valor en la línea de solicitud del mensaje de solicitud http, y luego envía el mensaje de solicitud http a la dirección URL especificada por la acción, y su valor salta en el navegador. es visible para los usuarios durante la transferencia; pero el principio de publicación es poner los campos en el formulario en forma de pares clave = valor en el cuerpo del mensaje de solicitud http, y luego enviar el mensaje a la dirección URL especificada por el acción, y el usuario será redirigido a la página No puedo ver la información de transferencia de valor;
    creo que si lo ve aquí, definitivamente se preguntará cuál es el mensaje http mencionado anteriormente; la
    explicación se da a continuación:
    mensaje http : Es un bloque de datos enviado entre aplicaciones HTTP. Estos bloques de datos comienzan con algo de metainformación en forma de texto, que describe el contenido y el significado del mensaje, seguido de secciones de datos opcionales. Todos estos mensajes fluyen entre el cliente, el servidor y el agente.
    Eche un vistazo al mensaje http:
    (1). La siguiente figura explica la línea de solicitud del mensaje http en el envío de obtención y la línea de solicitud agregada después de la URL; Inserte la descripción de la imagen aquí
    (2). La siguiente figura explica el campo de envío de publicación (clave = valor Formulario) Ponlo en el cuerpo del mensaje http;
    Inserte la descripción de la imagen aquí
    de hecho, entiendo que el mensaje es un bloque de datos en el protocolo http. Debido a que el cliente se comunica con el servidor en una forma de solicitud / respuesta, necesita para utilizar el protocolo http, por lo que es necesario utilizar el mensaje http;

7. Obtener / publicar la configuración de codificación correspondiente;

Inserte la descripción de la imagen aquí
Algunas cosas a tener en cuenta aquí:

1. Cómo modificar el URIEncoding en el server.xml, primero busque el server.xml en el directorio conf y ábralo; busque: no se
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
muestra, lo que indica que es el predeterminado, el Tomcat8 anterior es el ISO-8859 predeterminado -1, pero el Tomcat9 predeterminado es
Inserte la descripción de la imagen aquí
UTF- 8; Luego complételo aquí: el cuadro azul puede escribir un tipo de codificación, aquí escribo UTF-8; si no lo escribe, el UTF-8 predeterminado; escríbalo para una fácil comprensión;
aquí está el problema confuso, form get / La configuración de la diferencia de publicación y el principio de codificación están bien;



Todo lo anterior es entendimiento personal, por favor avise si hay algo mal;

Supongo que te gusta

Origin blog.csdn.net/qq_44555205/article/details/105492835
Recomendado
Clasificación