Expresión EL
El nombre completo de la expresión EL es: Expression
Language. Es un lenguaje de expresión.
¿Cuál es la función de la expresión EL? La expresión EL reemplaza principalmente el script de expresión en la página jsp para generar datos en la página jsp.
Porque las expresiones EL son mucho más concisas que los scripts de expresión jsp al generar datos.
El formato de la expresión EL es: $ {expresión} Cuando la
expresión EL genera un valor nulo, la salida es una cadena vacía. Cuando el script de expresión jsp genera un valor nulo, la salida es una cadena nula.
<body>
<%
request.setAttribute("key1","value1");
%>
表达式脚本输出key的值是:<%=request.getAttribute("key")==null?"":request.getAttribute("key1")%>
<br/>
EL表达式输出Key的值是:${key}
</body>
Resultados de la página:
Orden de búsqueda de expresión EL de datos de dominio
La expresión EL es principalmente para generar datos en la página jsp.
Genere principalmente los datos en el objeto de dominio (aplicación, sesión, solicitud, contenido de la página).
Cuando los cuatro campos tienen los mismos datos clave, la expresión EL buscará en el orden de los cuatro campos, de pequeño a grande, y generará una salida cuando se encuentre.
<body>
<%-- 往四个对象域中都保存了相同的key的数据--%>
<% application.setAttribute("key", "application");%>
<% session.setAttribute("key", "session");%>
<% pageContext.setAttribute("key", "pageContext");%>
<% request.setAttribute("key", "request");%>
${key}
</body>
Captura de pantalla de la página:
La expresión EL genera los atributos comunes y los atributos de matriz del Bean. Conjunto de lista
Atributos combinados, atributos de colección de mapas Atributos
ordinarios de salida de requisitos y atributos de matriz en la clase Person. Enumere los atributos de la colección y los atributos de la colección de mapas.
Clase de persona:
public class Person {
private String name;
private String[] phones;
private List<String> cities;
private Map<String, Object> map;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", phones=" + Arrays.toString(phones) +
", cities=" + cities +
", map=" + map +
'}';
}
public void setPhones(String[] phones) {
this.phones = phones;
}
public void setCities(List<String> cities) {
this.cities = cities;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String[] getPhones() {
return phones;
}
public List<String> getCities() {
return cities;
}
public Map<String, Object> getMap() {
return map;
}
}
código jsp
<body>
<%Person person=new Person();
person.setName("joy");
person.setPhones(new String[]{"18302000211","123212312341"});
List<String> cities = new ArrayList<>();
cities.add("北京");
cities.add("上海");
cities.add("南京");
person.setCities(cities);
Map<String,Object> maps=new HashMap<>();
maps.put("key1","value1");
maps.put("key2","value2");
maps.put("key3","value3");
person.setMap(maps);
pageContext.setAttribute("p",person);
%>
输出Person: ${ p}<br/>
输出Person的name属性:${p.name}<br/>
输出Person的phone数值属性值:${ p.phones[0]}<br/>
输出Person的cities集合中的元素值:${p.cities.get(0)}<br/>
输出Person的map集合中的元素值:${p.map.get("key1")}<br/>
输出Person的map集合中的元素值:${p.map.key2}<br/>
</body>
</html>
resultado de la operación:
Operación-expresión EL
Sintaxis: $ {expresión de operación}, expresión EL admite los siguientes operadores:
Operaciones relacionales
Operador relacional | Descripción | ejemplo | resultado |
---|---|---|---|
== o eq | igual | $ {5 == 5} | cierto |
! = o ne | no igual a | $ {5! = 5} | falso |
<或 Es | Menos que | $ {3 <5} | cierto |
> O gt | mas que el | $ {2> 10} | falso |
<= o le | Menos que o igual a | $ {5 <= 12} | cierto |
> = o ge | mayor o igual a | $ {3> = 5} | falso |
operación lógica
Operaciones aritmeticas
Operación
vacía La operación vacía puede juzgar si un dato está vacío, si está vacío, dará como resultado verdadero, si no está vacío, dará como resultado falso.
Las siguientes situaciones están vacías:
1. Cuando el valor es un valor nulo, está vacío
2. Cuando el valor es una cadena vacía, está vacío
3. El valor es una matriz de tipo de objeto, cuando la longitud es cero
4. Lista colección, número de elementos Cero
5. Colección de mapas, el número de elementos es cero
Operación ternaria
Expresión 1? Expresión 2: Expresión 3
Si el valor de la expresión 1 es verdadero, devuelve el valor de la expresión 2, si el valor de la expresión 1 es falso, devuelve el valor de la expresión 3.
"." operación de punto y operador de corchete []
.Operación de puntos, puede generar el valor de un atributo en el objeto Bean.
[] La operación entre corchetes puede generar el valor de un elemento en un conjunto ordenado.
Y la operación de corchetes [] también puede generar el valor de la clave que contiene caracteres especiales en la clave del conjunto de mapas.
11 objetos ocultos de expresión EL
Los 11 objetos implícitos en la expresión EL se definen por sí mismos en la expresión EL y se pueden usar directamente.
variable | Tipos de | efecto |
---|---|---|
pageContext | PageContextImpl | Puede obtener nueve objetos integrados en jsp |
pageScope | Mapa <Cadena, Objeto> | Puede obtener los datos en el dominio pageContext |
requestScope | Mapa <Cadena, Objeto> | Puede obtener los datos en el campo Solicitud |
sessionScope | Mapa <Cadena, Objeto> | Puede obtener los datos en el campo Sesión. |
applicationScope | Mapa <Cadena, Objeto> | Puede obtener los datos en el dominio ServletContext |
param | Mapa <Cadena, Cadena> | Puede obtener el valor del parámetro de solicitud. |
paramValues | Mapa <Cadena, Cadena []> | También puede obtener el valor del parámetro de solicitud y usarlo al obtener múltiples valores. |
encabezamiento | Mapa <Cadena, Cadena> | Puede obtener la información del encabezado de la solicitud. |
headerValues | Mapa <Cadena, Cadena []> | Puede obtener la información del encabezado de la solicitud, puede obtener múltiples valores |
Galleta | Mapa <Cadena, Cookie> | Puede obtener la información de las cookies de la solicitud actual. |
initParam | Mapa <Cadena, Cadena> | Puede configurar los parámetros de contexto en web.xml |
EL obtiene atributos en cuatro dominios específicos
pageScope ———— "pageContext dominio
requestScope ————" Solicitar dominio
sessionScope ———— "Sesión dominio
applicationScope ————" ServletContext dominio
Código captura de pantalla:
Ejecutar captura de pantalla:
Uso del objeto pageContext
1. Obtenga el protocolo utilizado por la página web:
2. Obtenga la IP del servidor:
3. Obtenga el puerto del servidor:
4. Obtenga la ruta del proyecto:
5. Obtenga el método de solicitud:
6. Obtenga la dirección IP del cliente:
7. Obtenga la número de identificación de la sesión:
## ### Uso de otros objetos implícitos de expresión EL
param
Map <String, String>
Puede obtener el valor del parámetro de solicitud
paramValues
Map <String, String []>
También puede obtener el valor del parámetro de solicitud, al obtener varios valores, use.
paramValues
Map <String, String []>
También puede obtener el valor del parámetro de solicitud, que se utiliza al obtener varios valores.
header
Map <String, String>
puede obtener la información del encabezado de la solicitud
headerValues
Map <String, String []>
puede obtener la información del encabezado de la solicitud, puede obtener varios valores
Dirección de la solicitud:
http: // localhost: 8080 / _EL_JSTL / other_el_obj.jsp? Name = joy & password = 123456 & hobby = java & hobby = python
initParam
Map <String, String>
Puede obtener la configuración del parámetro de contexto
web.xml configurado en web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>username</param-name>
<param-value>root</param-value>
</context-param>
<context-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</context-param>
</web-app>
Biblioteca de etiquetas JSTL (segundo punto importante ****)
El nombre completo de la biblioteca de etiquetas JSTL se refiere a la biblioteca de etiquetas estándar JSP
. Es una
biblioteca de etiquetas JSP de código abierto que mejora constantemente .
La expresión EL es principalmente para reemplazar el script de expresión en jsp, y la biblioteca de etiquetas es para reemplazar el script de código. Esto hace que toda la página jsp sea
mejor y más concisa
. Utilice la instrucción taglib en la biblioteca de etiquetas jsp para presentar la biblioteca de
etiquetas CORE biblioteca de etiquetas
<% @ taglib prefix = “c” uri = “http://java.sun.com/ jsp / jstl / core "%>
biblioteca de etiquetas XML
<% @ taglib prefix =" x "uri =" http://java.sun.com/jsp/jstl/xml "%>
biblioteca de etiquetas FMT
<% @ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%>
biblioteca de etiquetas SQL
<% @ taglib prefix = "sql" uri = "http://java.sun.com/jsp / jstl / sql ”%>
biblioteca de etiquetas FUNCTIONS
<% @ taglib prefix =“ fn ”uri =“ http://java.sun.com/jsp/jstl/functions ”%>
Pasos para utilizar la biblioteca de etiquetas JSTL
1. Primero importe el paquete jar de la biblioteca de etiquetas jstl.
2. En el segundo paso, use la instrucción taglib para presentar la biblioteca de etiquetas.
uso de la biblioteca central core
. <c: set /> (raramente usado)
role: set tag puede guardar datos en el campo
<c: if /> La
etiqueta if se usa para emitir juicios if.
<c: elige> <c: when> <c: else> tags
Función: juicio multidireccional. Está muy cerca de cambiar ... caso ... predeterminado.
Comience a seleccionar la etiqueta de elección para determinar
cuándo la etiqueta indica cada caso. El
atributo de prueba indica el valor del caso actual. La
etiqueta de lo contrario indica los casos restantes.
<C: elegir> <c: when> <c Puntos a tener en cuenta cuando se usa la etiqueta: de lo contrario>:
1. No se pueden usar anotaciones HTML en las etiquetas, pero se deben usar anotaciones jsp.
2. La etiqueta principal de la etiqueta when debe ser la etiqueta de elección
<c: forEach />
Función: uso de salida transversal.
2. Recorre la matriz de objetos
- Atraviesa la colección de mapas
Recorre la colección List
Propiedades en forEach
Métodos en la clase varStatus:
código de muestra:
resultados de salida: