Notas de estudio de expresión EL y etiqueta JSTL

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:
Inserte la descripción de la imagen aquí

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:

Inserte la descripción de la imagen aquí

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:
Inserte la descripción de la imagen aquí

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

Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí

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.
Inserte la descripción de la imagen aquí

"." 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.
Inserte la descripción de la imagen aquí

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:
Inserte la descripción de la imagen aquí
Ejecutar captura de pantalla:
Inserte la descripción de la imagen aquí

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:
Inserte la descripción de la imagen aquí
## ### 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.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

paramValues
Map <String, String []>
También puede obtener el valor del parámetro de solicitud, que se utiliza al obtener varios valores.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
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
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí
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>

Inserte la descripción de la imagen aquí

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
Inserte la descripción de la imagen aquí
. 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.
Inserte la descripción de la imagen aquí

2. En el segundo paso, use la instrucción taglib para presentar la biblioteca de etiquetas.
Inserte la descripción de la imagen aquí

uso de la biblioteca central core

. <c: set /> (raramente usado)
role: set tag puede guardar datos en el campo
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí
<c: if /> La
etiqueta if se usa para emitir juicios if.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
<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
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
<c: forEach />
Función: uso de salida transversal.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
2. Recorre la matriz de objetos
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

  1. Atraviesa la colección de mapas

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Recorre la colección List
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Propiedades en forEach

Métodos en la clase varStatus:
Inserte la descripción de la imagen aquí
código de muestra:
Inserte la descripción de la imagen aquí
resultados de salida:
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_44788518/article/details/108508943
Recomendado
Clasificación