1. Introducción a JSP
JSP (Java Server Pages) es un lenguaje de secuencias de comandos del lado del servidor. Es una tecnología que agrega lenguaje Java a las páginas HTML para generar páginas dinámicas: se agregan nuevas etiquetas (<%, %>,...).
JSP es una tecnología de generación de páginas web dinámica desarrollada en base a Java y Servlet. Su implementación subyacente es Java Servlet.
Las páginas JSP se componen de código HTML y código Java integrado en ellas. El servidor procesa estos códigos Java después de que el cliente solicita la página y luego devuelve la página HTML generada al navegador del cliente.
2. Proceso de ejecución de JSP El cliente solicita la página JSP -> JSP Parser analiza *.jsp y lo compila en *.java -> el comando javac lo compila en *.class -> ejecuta el archivo de clase -> responde y devuelve el resultado a el cliente
El código JSP contiene dos categorías: elementos JSP y datos de plantilla. Los datos de la plantilla se refieren a la parte que el motor JSP no procesa, es decir, el motor JSP pasará directamente las partes distintas de las etiquetas <%...%> sin ningún procesamiento.
Cuando se ejecuta JSP por primera vez o después de modificar el archivo JSP, llamará a JSP Parser para compilar el archivo *.jsp en un programa de servlet, por lo que será más lento.
3. Sintaxis básica de JSP
1. Dos tipos de anotaciones
(1) Comentario HTML Puede agregar un comentario en formato HTML al código JSP. Este comentario se envía al cliente pero no se muestra en la página. La sintaxis es la siguiente.
<!-- Comentarios en formato HTML, visibles al visualizar el código fuente en el cliente -->
<!-- Este comentario fue añadido por <%=programmer%>-->
Si el programador es un hacker, el comentario devuelto por el cliente es <!-- Este comentario lo agrega el hacker -->
(2) Los comentarios JSP se escriben en el código JSP pero no se envían al cliente.
<%-- comentario JSP, este comentario se ignorará cuando se compile JSP --%>
<%-- /*Comentarios de varias líneas en Scriptlet*/ --%>
<%-- /**Comentarios de varias líneas en Scriptlet, que se pueden extraer de archivos java usando javadoc*/ --%>
<%-- comentario de una sola línea JSP--%>
2. 3 elementos del guión
(1) Declaración de variables globales
<%! int i=0; Cadena cadena="¡Hola mundo!";
(2)Expresión
En el código JSP, las expresiones se utilizan a menudo para generar el valor de una variable, que puede estar en cualquier lugar.
<%! int a=1; int b=2; cadena cadena="¡Hola mundo!";
<%=a+b%> <%=cadena>
PD: No puedes utilizar el símbolo ";" como terminador de una expresión. Pero la misma expresión debe terminar con punto y coma en el Scriptlet.
(3) Guión
Un segmento de script se utiliza para contener un segmento de programa Java válido.
<%int b=3%>variable local
3. 3 elementos de mando
(1)comando de página
<%@ página contentType="text/html;charset=utf-8"%>
Defina los atributos globales del archivo JSP, incluidos: idioma, extensiones, importación, sesión, búfer, autoflush, isThreadSafe, info, errorPage, isErrorPage, contentType (formato de salida del servidor al cliente)
Su ubicación puede estar en cualquier lugar de la página, pero se recomienda colocarlo en la parte superior de la página.
idioma: declara el tipo de lenguaje de secuencias de comandos. Actualmente, sólo se puede utilizar "java".
extiende: indica el nombre completo de la clase Java que debe agregarse al compilar JSP. Limitará la capacidad de compilación de JSP, ¡así que úselo con precaución!
importar: lista de paquetes de Java que deben importarse.
sesión: establece si el cliente requiere sesión HTTP. El valor predeterminado es verdadero.
búfer: el objeto de salida utiliza el tamaño del búfer para procesar la salida del JSP ejecutado al navegador del cliente. El valor predeterminado es 8Kb.
autoFlush: establece si se debe forzar la salida si el búfer se desborda. Si se define como verdadero (valor predeterminado), la salida será normal; si se define como falso, se producirá un error inesperado.
isThreadSafe: establece si el archivo JSP se puede utilizar en varios subprocesos. El valor predeterminado es verdadero.
información: información de texto. Se puede recuperar utilizando el método Servlet.getServletInfo().
errorPage: establece el archivo JSP que maneja eventos de excepción
sErrorPage: establece si esta página es una página que maneja eventos de excepción. Si se establece en verdadero, se puede utilizar el objeto de excepción.
contentType: establece el tipo MIME y el conjunto de codificación de caracteres. El tipo MIME predeterminado es texto/html y el juego de caracteres predeterminado es charset=ISO-8859-1.
Se pueden usar varias directivas < %@page %> en una página, pero excepto el atributo de importación, los demás atributos solo se pueden usar una vez.
Paquetes importados por JSP de forma predeterminada Los siguientes paquetes se importaron durante la compilación de JSP, por lo que no es necesario utilizar la directiva de página para introducirlos en el archivo JSP:
java.lang.*
javax.servlet.*
javax.servlet.jsp.*
javax.servlet.http.*
(2) incluir directiva
código HTML
<%@ incluir archivo = "ruta relativa" %>
Utilice la directiva include para incluir un archivo estático en JSP y analizar las declaraciones JSP en este archivo.
Si la ruta comienza con "/", entonces esta ruta se refiere principalmente a la ruta de contexto de la aplicación jsp.
Si la ruta se abre como un nombre de archivo o directorio de archivos, entonces esta ruta es la ruta actual del archivo JSP que se está utilizando.
(3) comando taglib
código HTML
<%@ taglib uri = "TagLibrary" prefijo = "mypfx" %>
Utilice la directiva taglib para definir una biblioteca de etiquetas y su prefijo personalizado.
uri: el identificador uniforme de recursos nombra de forma única la etiqueta personalizada según el prefijo de la etiqueta, que puede ser una ruta relativa o absoluta.
prefijo: el prefijo de la etiqueta personalizada. No utilice jsp, jspx, java, javax, servlet, sun, sunw como prefijos, estos han sido declarados reservados por Sun.
4. 8 comandos de acción
(1) Salto de página: <jsp:forward>
La etiqueta <jsp:forward> pasa un objeto de solicitud que contiene una solicitud de usuario de un archivo jsp a otro.
Contiene 2 atributos en total.
El atributo de página es una expresión o una cadena que describe el archivo o URL que se va a dirigir.
<jsp:param>Envía uno o más parámetros a un archivo dinámico. Si se utiliza la etiqueta <jsp:param>, el archivo de destino debe ser un archivo dinámico (como Servlet o JSP, etc.)
código HTML
<jsp:página de avance=test.jsp>
<jsp:param nombre="nombre de usuario" valor="<%=usuario%>"/>
<jsp:nombre del parámetro="contraseña" valor="12345678"/>
</jsp:adelante>
Obtenga el nombre de usuario a través de request.getParameter("username")
(2) Incluir página: <jsp:include>
<jsp:include> permite la inclusión de recursos web estáticos y dinámicos, y los resultados de estas dos inclusiones son diferentes.
Si solo se incluyen archivos estáticos, entonces esta inclusión solo agrega el contenido del archivo incluido al archivo JSP, similar a < %@include% >;
Si se incluye un recurso web dinámico, el compilador JSP también ejecutará el archivo incluido.
Si este archivo de inclusión es dinámico, también puede usar <jsp:param> para pasar parámetros y valores de parámetros.
(3) Crear Bean: <jsp:useBean>
Cree una instancia de Bean y especifique su nombre y alcance.
<jsp:useBean id="beanInstanceName" alcance="página|solicitud|sesión|aplicación" clase="paquete.className"/>
Contiene 5 atributos.
id: confirme la variable Bean en el alcance definido y use la identificación para usar esta instancia de Bean en el programa. El valor de id distingue entre mayúsculas y minúsculas.
Alcance: el alcance en el que existe el Bean y el alcance válido del nombre de la variable de identificación. El valor predeterminado es página.
clase: utilice la nueva palabra clave y el constructor de clases para crear una instancia de un bean a partir de una clase. La clase no puede ser abstracta y debe tener un constructor público sin argumentos.
tipo: si este Bean ya existe en el ámbito especificado, el uso de tipo asignará un tipo de datos a este Bean. Si se utiliza el tipo sin clase ni nombre de bean, no se creará una instancia del bean.
beanName: beanName puede ser una cadena package.class o una expresión jsp, y su valor se pasará al método Beans.instantiate. El valor de tipo puede ser el mismo que beanName, su clase base o la interfaz que implementa.
(4) Establecer propiedades de Bean: <jsp:setProperty>
<jsp:setProperty name="beanInstanceName" property="*"|property="propertyName" value="string|<%=expression%>"|param="parameterName"/>
nombre: Indica el nombre de la instancia de Bean que se ha creado en <jsp:useBean>, es decir, id.
propiedad: Coincide con las propiedades en el Bean
parámetro: se refiere al nombre del parámetro en el objeto de solicitud y establece el valor correspondiente al atributo Bean.
valor: utilice el valor especificado para establecer la propiedad Bean. Este valor puede ser una cadena o una expresión. Si es una cadena, se convertirá al tipo del atributo Bean (por ejemplo, "0,98" se convertirá al tipo doble 0,98). Si es una expresión, se requiere que su tipo sea coherente con el tipo del atributo Bean.
PD: los atributos de parámetro y los atributos de valor no se pueden usar al mismo tiempo en el mismo <jsp:setProperty>
(5) Obtener propiedades de Bean: <jsp:getProperty>
Obtenga el valor del atributo en el objeto Bean existente y muéstrelo en la página.
<jsp:getProperty nombre="beanInstanceName propiedad="nombre de propiedad"/>
nombre: el mismo nombre que la instancia del objeto existente.
propiedad: el nombre de la propiedad en el objeto
(6) Utilice el complemento Applet: <jsp:plugin>
código HTML
<jsp:tipo de complemento="applet" código="MeidaPlay.class" codebase="../clases">
<jsp:parmas>
<jsp:param nombre="camino" valor="Salón"/>
</jsp:params>
<jsp:refuerzo>
<p>¡No se puede cargar el subprograma!</p>
</alternativa>
</jsp:complemento>
Utilice <jsp:plugin> para insertar un subprograma o Bean y, si es necesario, descargue un complemento de Java para ejecutarlo.
(7) Definir parámetros: <jsp:param>
Se puede utilizar en <jsp:include>, <jsp:forward>, <jsp:plugin>.
(8) Mensaje de error del complemento: <jsp:fallback>
Cuando el complemento <jsp:plugin> no se puede mostrar normalmente, se muestra un mensaje.
3. Objetos integrados JSP
1. Solicitud: Objeto de solicitud. Este objeto encapsula la información enviada por el usuario. La información encapsulada se puede obtener llamando al método correspondiente del objeto.
Cuando el objeto de solicitud obtiene los caracteres chinos enviados por el cliente, aparecerán caracteres confusos y se deberá realizar un procesamiento especial.
Métodos comúnmente utilizados:
getParameter (nombre del parámetro de cadena): obtiene la información de envío del formulario.
getProtocol(): Obtiene el protocolo utilizado por el cliente.
getServletPath(): obtiene la página donde el cliente envió información.
getMethod(): El método para obtener la información enviada por el cliente.
getHeader (String str): obtiene los valores de aceptar, aceptar codificación y Host en el archivo de encabezado HTTP.
getRermoteHost(): obtiene la dirección IP del cliente.
getServerName: obtiene el nombre del servidor.
getServerPort: obtiene el número de puerto del servidor.
getParameterNames(): obtiene los nombres de todos los parámetros enviados por el cliente.
2. Respuesta: el objeto de respuesta responde dinámicamente a la solicitud del cliente y envía datos al cliente.
(1) Responda dinámicamente al atributo contentType Utilice el comando de página para configurar estáticamente el atributo contentType de la página. Al configurar este atributo dinámicamente, utilice Response.setContextType("text/html;charset=utf-8");
(2) Redirección de respuesta
respuesta.sendRedirect("index.jsp");
3. Sesión: objeto de sesión
(1) ¿Qué es un objeto de sesión?
El objeto Session se crea automáticamente cuando se carga la primera página JSP para completar la gestión de la sesión.
Comienza cuando un cliente abre un navegador y se conecta al servidor, y finaliza cuando el cliente cierra el navegador y abandona el servidor.
(2) ID del objeto de sesión
Cuando un cliente visita una página JSP en el servidor por primera vez, el motor JSP genera un objeto de sesión y asigna un número de identificación de tipo Cadena. El motor JSP también envía este número de identificación al cliente y lo almacena en una cookie. De esta manera, el objeto de sesión no es hasta que el cliente cierra el navegador que el servidor modifica el objeto de sesión del cliente y la correspondencia de la sesión con el cliente desaparece.
(3)Métodos comunes
public String getId(): obtiene el número del objeto de sesión.
public void setAttribute (String str, Object obj): agrega el objeto de parámetro al objeto de sesión.
Objeto público getAttribute (): obtiene los atributos en el objeto de sesión según el nombre del atributo.
public boolean isNew (): determina si es un cliente nuevo.
4. Aplicación: objeto de aplicación
(1) ¿Qué es un objeto de aplicación?
Este objeto de Aplicación se genera después de que se inicia el servidor. Cuando un cliente navega entre varias páginas del sitio web visitado, el objeto de Aplicación es el mismo y todos los clientes comparten este objeto de Aplicación integrado.
(2)Métodos comunes
setAttribute (clave de cadena, objeto obj): agrega el objeto de parámetro al objeto de aplicación.
getAttibute (clave de cadena): obtiene los atributos en el objeto Aplicación según el nombre del atributo
5. Salida: objeto de salida
El objeto de salida es un flujo de salida que se utiliza para enviar datos a los clientes.
out.print(): genera varios tipos de datos.
out.newLine(): genera un carácter de nueva línea.
out.close(): Cierra la transmisión.
6. Config: objeto de configuración Generalmente, usamos el objeto Config para obtener información de configuración de inicialización. Los métodos comúnmente utilizados son getInitParameter y getInitParameterNames para obtener los parámetros durante la inicialización del servlet.
7.Página: objeto de página
El objeto de página representa el objeto de clase en ejecución generado por el archivo JSP y no se recomienda para lectores generales.
8.PageContext: objeto de contexto de página
La clase PageContext introducida por JSP le permite acceder a muchas propiedades de la página. La variable pageContext almacena el valor del objeto PageContext asociado con la página actual. La clase PageContext tiene métodos como getRequest, getResponse, getOut y getSession.
9.Excepción: objeto de excepción
El objeto de excepción representa el objeto de excepción generado cuando se ejecuta el archivo JSP. Este objeto no se puede usar directamente en archivos JSP normales, solo se puede usar en.
< %@page isErrorPage="true"%> se utiliza en archivos JSP. Esto se debe a que el objeto de error generado cuando se ejecuta el archivo JSP se descarta y solo puede ser interceptado por un JSP que utilice la etiqueta < %@pageisErrorPage="true"% > para interceptar el objeto de error. El método más utilizado es getMessage, que se utiliza para obtener información de error.
4. Página de inicio de sesión de la instancia: index.jsp
código HTML
<%@ idioma de página="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
<html>
<cabeza>
<title>Inicio de sesión del sistema</title>
<meta http-equiv="Tipo de contenido" content="text/html; charset=gb2312">
<enlace href="css/vbulletin.css" rel="hoja de estilo" tipo="texto/css">
<tipo de estilo="texto/css">
.btn {
familia de fuentes: "Tahoma", "宋体";
tamaño de fuente: 9 puntos;
color: #001E3C;
BORDE INFERIOR: #6794BC 1px sólido;
FRONTERA IZQUIERDA: #8BB8E0 1px sólido;
BORDE DERECHO: #6794BC 1px sólido;
BORDE SUPERIOR: #8BB8E0 1px sólido;
imagen de fondo: url(imagen/buttonbg.gif);
CURSOR: mano;
estilo de fuente: normal;
relleno-izquierda: 3px;
relleno-derecha: 3px;
}
</estilo>
<tipo de script="texto/javascript">
función iniciar sesión(){
var vform = documento.loginform;
if(!loginform.nombredeusuario.valor){
alerta ("¡Ingrese el nombre de usuario!")
devolver;
}
if(!loginform.contraseña.valor){
alerta ("¡Ingrese la contraseña!")
devolver;
}
vform.enviar();
}
</script>
</cabeza>
<cuerpo topmargin="0" leftmargin="0" >
<formulario acción="recibir.jsp" nombre="longinForm" método="publicar">
<ancho de tabla="100%" alto="100%">
<tr>
<td align="centro" valign="medio">
<TABLA id="formulario1"
cellpacing="0" cellpadding="0" border="0" style="ancho: 500;">
<CAPTION style="display: none">
</TÍTULO>
<TR>
<TD>
<TABLE ancho="100%" alto="100%" espacio entre celdas="0"
cellpadding="0" border="0" style="table-layout: fijo">
<TR>
<TD valign="arriba">
<FIELDSET id="form1_group0" estilo="ancho: 100%;">
<LEGEND>Inicio de sesión del sistema</LEGEND>
<DIV>
<DIV estilo="ancho: 100%; alto: 100%">
<TABLE ancho="100%" espacio entre celdas="0"
cellpadding="4" border="0" style="table-layout: fijo;">
<GRUPO COL>
<COL ancho="100"></COL>
<COL ancho="50%"></COL>
<COL ancho="100"></COL>
<COL ancho="50%"></COL>
</COLGROUP>
<TR>
<TD align="derecha">
nombre de usuario
</TD>
<TD clase="InnerTableContentCell">
<tipo de entrada="texto" nombre="nombre de usuario"
estilo="ancho: 100%;">
</TD>
<TD align="derecha">
contraseña
</TD>
<TD>
<tipo de entrada="contraseña" nombre="contraseña"
estilo="ancho: 100%;"
<tipo de entrada="oculto" nombre="acción2" valor="0">
</TD>
</TR>
<TR>
<TD colSpan="4"
alinear="derecha">
<tipo de entrada="botón" nombre="iniciar sesión" valor="Iniciar sesión" onclick="this.form.submit();"
</TD>
</TR>
</TABLA>
</DIV>
</DIV>
</FIELDSET>
</TD>
</TR>
</TABLA>
</TD>
</TR>
</TABLA>
</td>
</tr>
</tabla>
</formulario>
</cuerpo>
</html>
Recibir página de datos: recibir.jsp
código HTML
<%@ lenguaje de página="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" info="etiqueta de acción"%>
<jsp:useBean id="userVo" class="ejercicio.vo.UserVo" alcance="solicitud">
<jsp:setProperty nombre="userVo" propiedad="nombre" param="nombre de usuario"/>
<jsp:setProperty nombre="usuarioVo" propiedad="contraseña" param="contraseña"/>
</jsp:useBean>
<html>
<cabeza>
<meta http-equiv="Tipo de contenido" content="text/html;charset=UTF-8" >
<enlace href="css/vbulletin.css" rel="hoja de estilo" tipo="texto/css">
</cabeza>
<cuerpo>
Esta es mi página JSP.
<hr>Utilice <jsp:getProperty> para obtener el valor enviado en el formulario<br>
nombre:<jsp:getProperty propiedad="nombre" nombre="usuarioVo"/>><br>
contraseña:<jsp:getProperty property="contraseña" nombre="userVo"/>
<br><br><hr>
<%
out.println("Obtener directamente desde el objeto vo:<br> nombre:"+userVo.getName()+
"<br>contraseña:"+userVo.getPassword()+"<br>");
String serviceName = request.getServerName();//solicitar objeto dentro de 1.jsp
out.println("<br><hr>Nombre del servidor: "+nombredelservicio);
out.println("<br>tipo MIME: "+response.getContentType());//2.jsp objeto de respuesta interna
session.setAttribute("sessionName","objeto de sesión dentro de jsp");//3.jsp objeto de sesión interno
out.println("<br>objeto de sesión: "+session.getAttribute("sessionName"));//4.jsp objeto de salida interno
pageContext.setAttribute("pageContext","Referencia del entorno contextual");//objeto pageContext dentro de 5.jsp
//6.aplicación
//7.configurar instancia de ServletConfig
//8. Instancia de página java.lang.Object
//9. La excepción debe usar una instancia de java.lang.Throwable en la página con isErrorPage=true en la directiva de la página.
Información de cadena = pageContext.getServletContext().getServerInfo();
out.println("Obtener el atributo de información en el comando de página: "+info);
%>
</cuerpo>