Concepto JSP
JSP: página del servidor Java ----- página del servidor java, la página que se ejecuta en el lado del servidor es analizada por el contenedor web en HTML estático y enviada al navegador, y luego analizada por el navegador. La página HTML que vemos en el navegador es en realidad el resultado de la ejecución de JSP en el servidor.
Ventajas de JSP en relación con HTML y Servlet
tecnología | Características |
---|---|
HTML | Excelente: se utiliza para la visualización de páginas web, es fácil de escribir código JavaScript y estilos CSS. Falta: no se puede escribir contenido dinámico |
Servlet | Falta: escribo código Java, no es conveniente escribir estilos JavaScript y CSS. Excelente: capaz de escribir contenido dinámico y acceder a la base de datos |
JSP | JSP = HTML + Servlet hereda las ventajas de las dos tecnologías. Puede escribir contenido dinámico, pero también facilitar el embellecimiento de la página. |
La relación entre JSP y Servlet
JSP es un servlet
JSP es traducido a un servlet por el servidor y luego compilado en un archivo de clase.
Cuando un usuario visita esta JSP por primera vez, el servlet se genera solo una vez.
Tres anotaciones de JSP
Tres tipos de anotaciones en JSP | Descripción |
---|---|
HTML | <! - Comentar -> Solo se puede comentar contenido estático |
Java | Los tres tipos de comentarios están disponibles // línea única / * líneas múltiples / / * comentarios de documentos * / comentarios solo para código Java |
JSP | <% - Comentario -%> |
- Comentarios HTML: visibles en el código fuente de la página web
- Nota de Java: visible en el servlet traducido
- Nota JSP: no visible en páginas web y servlets
Tres tipos de elementos de script de JSP
componente | Características | gramática |
---|---|---|
Fragmento de código JSP | Escribir código general de Java | <%%> |
Expresión de script JSP | Muestra el valor de una variable o expresión | <% =%> |
Declaración JSP | Declarar variables o métodos globales | <%! %> |
Objeto de alcance integrado de JSP
pageContext 、 solicitud 、 sesión 、 aplicación 、
El papel de las expresiones EL
- Valor en el alcance de la salida
- Utilizado para varios cálculos de operador
La diferencia entre expresión EL y expresión EL
EL: Lenguaje de expresión Lenguaje de expresión
la diferencia | Expresión JSP | Expresión EL |
---|---|---|
gramática | <% = variable de secuencia de comandos%> | $ {Clave en alcance} |
Dónde generar el valor | Salida del valor de una variable de secuencia de comandos de Java | Valor en el alcance, siempre que la clave y el valor se deben colocar primero en el alcance |
Métodos y escritos relacionados con los dominios de página.
void setAttribute(String key,Object value) //向页面域中添加键和值
Object setAttribute(String key) //向页面域中取出指定的值
void removeAttribute(String key); // 删除所有域中同名的值
void removeAttribute(String key,int scope); // 删除指定域的值
Object findAttribute(String key); //从小到大的范围去查找作用域同名的值,找到就不找了,找不到则返回null
Escritura EL:
Alcance | Cómo escribir EL |
---|---|
Dominio de la página | $ {pageScope.key} |
Solicitar dominio | $ {requestScope. 键} |
Dominio de la sesión | $ {sessionScope. 键} |
Contexto superior e inferior | $ {applicationScope. 键} |
Busqueda automatica | $ {clave} |
Ejemplos de métodos relacionados con dominios de página:
<body>
<%
// 向四个作用域中添加键值对
pageContext.setAttribute("name","页面域");
request.setAttribute("name","请求域");
session.setAttribute("name","会话域");
application.setAttribute("name","上下文域");
%>
得到页面域的值:<%=pageContext.getAttribute("name")%><br/>
得到请求域的值:<%=request.getAttribute("name")%><br/>
得到会话域的值:<%=session.getAttribute("name")%><br/>
得到上下文域的值:<%=application.getAttribute("name")%><br/>
<%
//pageContext.removeAttribute("name");// 删除所有域中同名的值
pageContext.removeAttribute("name",PageContext.PAGE_SCOPE);// 删除指定域的值
%>
<h2>删除后</h2>
得到页面域的值:<%=pageContext.getAttribute("name")%><br/>
得到请求域的值:<%=request.getAttribute("name")%><br/>
得到会话域的值:<%=session.getAttribute("name")%><br/>
得到上下文域的值:<%=application.getAttribute("name")%><br/>
从小到大的范围去查找作用域同名的值,找到就不找了:<%=pageContext.findAttribute("name")%><br/>
<h2>使用el表达式取出作用域的值</h2>
页面域:${pageScope.name}<br/>
请求域:${requestScope.name}<br/>
会话域:${sessionScope.name}<br/>
上下文域:${applicationScope.name}<br/>
自动查找:${name}<br/>
</body>
resultado:
Utilice EL para extraer diferentes tipos de datos del campo
tipo de datos | Escritura |
---|---|
Propiedades en JavaBean | $ {object.attribute} |
Lista | $ {lista [índice]} |
Formación | $ {matriz [índice]} |
Colección de mapas | $ {map.key} o $ {map ["key"]} |
Operador EL
Operadores aritméticos: +, -, *, /,%
Operadores de comparación: ==,! =, <,>, <=,> =
Operadores lógicos: &&, ||
,! Operadores ternarios: $ {condición Expresión? Valor verdadero: valor falso)
Los anteriores son los mismos que los de Java;
Operador nulo:
Sintaxis: $ { clave vacía } |
---|
1. Determine si la clave es NULL y devuelva verdadero si está vacía |
2. Si la clave es una cadena vacía, también devuelve verdadero |
3. Si la clave es una colección y no hay elementos en la colección, devuelve verdadero |
Concepto JSTL
JSTL (JSP Standard Tag Library, JSP Standard Tag Library) es una biblioteca de etiquetas JSP de código abierto que mejora constantemente. Podemos escribir varias etiquetas en la página JSP para completar algunas funciones complejas. Su propósito es reducir la cantidad de código Java en la página JSP y hacer que la página JSP se mantenga mejor . Su capa inferior esencialmente ejecuta código Java .
Biblioteca de etiquetas personalizadas JSTL
- core: biblioteca de etiquetas del núcleo, utilizada para el control de flujo del código en la página. Tales como: si, para
- formato: etiquetas internacionalizadas y formateadas, que pueden formatear números como fechas y monedas. También puede realizar operaciones internacionales en la misma página.
- xml: analizar archivos XML directamente en JSP
- sql: el acceso directo a la base de datos en JSP no se ajusta a la arquitectura de tres niveles. Capa de presentación -> capa empresarial -> capa de acceso a datos
- función: utiliza varias funciones en JSP, funciones de cadena
Utilice etiquetas principales
instrucción taglib: se utiliza para usar la biblioteca de etiquetas en la página JSP
- Biblioteca de etiquetas de núcleo: núcleo, rol: utilizado para el control de flujo de código
- Sintaxis para usar etiquetas: <c: nombre de etiqueta>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
JSTL | prefijo | Signo de URI | efecto |
---|---|---|---|
Biblioteca de etiquetas principales | C | Esta etiqueta es una identificación única, escritura fija | Para el control de flujo del código en la página. |
Etiquetas JSTL: etiquetas if
La etiqueta if de jsp no tiene más
<c:if test="${param.age >=18 }">
你已经成年,可以访问本网站<br/>
<a href="https://blog.csdn.net/RookiexiaoMu_a">点开有惊喜</a>
</c:if>
Etiquetas JSTL: elija etiqueta
<form action="demo08.jsp" method="get">
请输入分数:
<input type="text" name="score" value="${param.score}">
<input type="submit" value="评级">
</form>
<c:choose>
<%--test是一个判断条件,使用EL--%>
<c:when test="${param.score >=80 && param.score<=100}">
优秀
</c:when>
<c:when test="${param.score >=60 && param.score<80}">
及格
</c:when>
<c:when test="${param.score >=0 && param.score<60}">
不及格
</c:when>
<c:otherwise>
<script>
alert("分数有误");
</script>
</c:otherwise>
</c:choose>
</body>
Etiqueta JSTL: para cada etiqueta
Debido a que EL no tiene la función transversal, use la etiqueta forEach para recorrer la colección o matriz en el
alcance. Propiedad VarStatus : La propiedad varStatus es un objeto y también tiene propiedades: