Полное имя EL - язык выражения (язык выражения), который является одной из наиболее важных особенностей JSP2.0. Выражения EL можно использовать для доступа к данным в приложении для устранения сценариев Java на странице JSP.
Синтаксис выражения EL
Выражение, например, x+y может быть записано как {x+y}
Ключевые слова в El
Ниже приведены ключевые слова в EL, которые нельзя использовать в качестве идентификаторов:
и, eq, gt, true, exanceOf, или Le, false, пусто, не, lt, ge, null, div, mod
1. Введение в EL Expressions
Полное имя Эль - язык выражения. Основные функции EL:
1. Получить данные
Выражения EL в основном используются для замены выражений сценариев на страницах JSP для извлечения объектов Java и получения данных из различных типов веб -доменов. (Объекты в определенном веб -домене, доступ к свойствам Javabean, сборке списков доступа, коллекции доступа, массиве доступа)
2. Выполнить операции
Используя EL Expressions, вы можете выполнить некоторые основные реляционные операции, логические операции и арифметические операции на странице JSP, чтобы завершить некоторые простые логические операции на странице JSP. $ {user == null}
3. Получить общие объекты для веб -разработки
Эль -выражения определяют некоторые неявные объекты. Используя эти неявные объекты, веб -разработчики могут легко получить ссылки на широко используемые веб -объекты, получая тем самым данные в этих объектах.
4. Позвоните в методы Java
EL Expressions позволяет пользователям разрабатывать пользовательские функции EL для вызова методов классов Java через EL Expressions на страницах JSP.
1.1. Получить данные
Используйте EL Expression, чтобы получить синтаксис данных: "$ {идентификатор}"
Когда будет выполнено оператор EL Expression, будет вызван метод PageContext.findattribute, используя идентификатор в качестве ключевого слова для поиска соответствующего объекта из четырех полей страницы, запроса, сеанса и приложения. Если это найдено, он вернет соответствующий объект. Если это не найдено, он вернется «» (обратите внимание, что это не нулевая, а пустая строка).
Выражения EL могут легко получить свойства Javabean или получить данные массивов, коллекций и типов карт.
Пример выражения EL для получения данных:
<%@page language = "java" import = "java.util.*" pageencoding = "utf-"%> <%@taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> <%@page import = "me.gacl. Import = "me.gacl.domain.Address"%> <! Doctype html> <html> <Head> <Title> EL выражение получает данные </title> </head> <body> <%request.setattriut Данные: $ {name} <hr> <!-на странице JSP используйте выражение EL, чтобы получить свойства бобов-> <% Person P = new Person (); p.setage (); request.setattribute («Человек», P);%> Использовать EL Expression, чтобы получить свойства Bean: $ {Person.age} <HR> <! Полем Полем Полем Полем Полем Полем Полем Полем Атрибуты-> <% Person Person = new Person (); Addch Address = new Address (); Person.setAddress (адрес); request.setattribute («человек», человек);%> $ {person.address.name} <hr> <!-На странице jsp, используйте выражение EL, чтобы получить данные в указанной позиции в коллекции списка-> <% Person Perse Permon (). Canglang "); Person p = new Person (); p.setname (" Белый тигр бог Император "); List <Person> list = new ArrayList <derss> (); list.add (p); list.add (p); request.setattribuit -> <C: foreach var = "person" items = "$ {list}"> $ {person.name} </c: foreach> <hr> <!-на странице JSP используйте выражение EL, чтобы получить данные коллекции карты-> <% map <string> map = new LinkedHashmap <string, string> (); map.put ("a", "aaaaxxx"); map.put ("b", "bbbb"); map.put ("c", "cccc"); map.put ("" "," Aaaa "); -> $ {map.c} $ {map [""]} <hr> <!-Коллекция MAP Iterate-> <C: foreach var = "me" items = "$ {map}"> $ {me.key} = $ {me.value} <br/> </c: for> <hr> </body> Эффект работы заключается в следующем:
1.2. Выполнить операции
Синтаксис: $ {Операция выражения}, EL Expression поддерживает следующие операторы:
1. Операторы реляционных
2. Логические операторы:
3. Пустой оператор: проверьте, является ли объект NULL (пусто)
4. Бинарное выражение: $ {user! = Null? User.name: ""}
5. [] и. операторы
Пример выполнения операций с использованием EL Expressions:
<%@page language = "java" import = "java.util.*" pageencoding = "utf-"%> <%@taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> <%@import = "me.gacl.domain.user"%> Html> <html> <head> <tite> el Experian Expression Operator </title> </head> <body> <h> el Выражает четыре операции: </h> Операция с добавлением: $ {+} <br/> Операция вычитания: $ {-} <br/> Операция: $ {*} <br/> Операция деления: $ {/} <br/> h> el. Операции: </h> <%-$ {user == null} и $ {пользователь EQ null}; Эквивалент-%> $ {user == null} <br/> $ {пользователь EQ null} <br/> $ {пользователь eq eq null} <br/> El выражение использует пустой оператор, чтобы проверить, является ли объект null (пусто) </h> <% <string> list = новый ArrayList <string> ();; list.add ("gacl"); list.add ("xdp"); request.setattribute ("list", list);%> <%-Используйте пустой оператор, чтобы проверить, является ли объект null (пусто)-%> <c: if test = "$ {! Пусто (List)}"> <c: for var = "str" Items = "$ {list}"> $ {str} <br/> </c: foreach> </c: if> <br/>%list <string> emptylist = null;%> <%-Используйте пустой оператор, чтобы проверить, является ли объект nul Выражения используются в EL Expressions </h> <% session.setattribute («Пользователь», новый пользователь («Lonely Ganglang»));%> $ {user == null? «Извините, вы не вошли в систему»: user.username} <br/> <h> el данные выражения Echo </h> <% user user = new user (); user.setgender («мужчина»); // data echo request.setattribut $ {user.gender == 'male'? 'checked': ''}> male <input type = "radio" name = "gender" value = "nember" $ {user.gender == 'fome'? 'проверено': ''}> fome <br/> </body> </html>Результаты работы следующие:
1.3. Получить общие объекты для веб -разработки
Язык выражения EL определяет 11 неявных объектов. Использование этих неявных объектов может легко получить некоторые общие объекты в веб -разработке и прочитать данные этих объектов.
Синтаксис: $ {неявное имя объекта}: получить ссылку на объект
Тест 11 неявных объектов в EL Expressions:
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-"%> <! doctype html> <html> <head> <Title> el неявным object</title></head><body><br/>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //map%> $ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //map%> $ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Это выражение часто используется в Echoes Data -> <form action = "$ {pagecontext.request.contextpath}/servlet/registerervlet" method = "post"> <input type = "text" name = "username" value = "$ {param.username}"> <input type = "posent" userme "=" $ {param.username} " value="register"></form><br/>---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- http: // localhost: /javaweb_el_study_/eldemo.jsp? like = aaa & like = bb -> $ {paramvalues.like []} $ {paramvalues. like []} <br/>---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- , for пример принять, кодирование, headerValues["Accept-Encoding"]--%>${header["Accept-Encoding"]}<br/>-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Объект карты, который хранит все поля заголовка запроса HTTP. Для параметра запроса он возвращает массив строки []. Например: Headervalues.accece возвращает строку [] массив. Headervalues.accept [] Убирает первое значение в массиве-%> $ {headervalues.accep []} <br/> <%-$ {heatervalues.accept-encoding} При написании этого пути будет сообщена ошибка при тестировании головных залов. Если в заголовке есть «-», например, принять, Headervalues [«Accept-Coloding»] Headervalles ["Accept-Coding"] [] возвращает массив String []. Headervalues ["Accept-Coding"] [] [] вынимает первое значение в array--%>${headerValues["Accept-Encoding"][]}<br/>------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ -> $ {cookie.jsessionId.value} // Сохранить карту всех cookies<br/>------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Настройка параметров инициализации в файле web.xml -> <context-param> <param-name> xxx </param-name> <param-value> yyyy </param-value> </context-param> <stext-param> <param-name> root </param-name> <param-value>/javaweb_el_study _ </param-value> </context-param>-%-%-savletcreter-in savletcreter-in savletcrectore _ </pam -%> $ {initparam.xxx} <br/> $ {initparam.root} </body> </html> Кодекс RegisterServlet заключается в следующем:
package me.gacl.web.controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class RegisterServlet Extends httpservlet {/************************************** request.setattribute («Имя пользователя», имя пользователя) для хранения имени пользователя в объекте запроса* Однако на странице eldemo.jsp вы можете использовать $ {param.username}, чтобы получить значение параметра имени пользователя в объекте запроса*/request.getRequestdispatcher ("/eldemo.jsp"). Запрос, httpservletresponse response) Throws ServletException, ioException {Doget (запрос, ответ);}} Результаты теста следующие:
Уведомление:
При тестировании заголовка и головных залов, если в заголовке есть «-», например, принять, заголовок [«Принятие, кодирование»] и головные услуги [«Принятие кодирования»]
Например, при тестировании файлов cookie $ {cookie.key} принимает объект cookie. Если вы получите доступ к имени и стоимости cookie, вы должны иметь $ {cookie.key.name} или $ {cookie.key.value}
1.4. Вызовите методы Java с помощью EL
EL Expression Syntax позволяет разработчикам разрабатывать пользовательские функции для вызова методов классов Java. Синтаксис: $ {prefix: method (params)}
Единственное, что можно назвать в выражении EL, - это статический метод класса Java. Статический метод этого класса Java должен быть описан в файле TLD, прежде чем он может быть вызван выражением EL.
EL пользовательские функции используются для расширения функций EL Expressions, позволяя EL Expressions выполнять функции, которые может завершить обычный код программы Java.
1.5. ЭЛ ФУНЦИАЛЬНЫЕ ШАГИ
Вообще говоря, разработка и применение пользовательских функций EL включают следующие три шага:
1. Напишите статический метод класса Java
2. Напишите файл дескриптора библиотеки тегов (TLD) и опишите пользовательские функции в файле TLD.
3. Импорт и используйте пользовательские функции на странице JSP
Пример: разработка функции EL для выхода из HTML -тегов
1. Напишите класс инструментов для обработки HTML Escape и добавьте методы статической обработки, чтобы избежать тегов HTML в классе инструментов, следующим образом:
Пакет me.gacl.util;/*** @classname: htmlfilter* @description: html Escape обработка класса* @author: lonely canglang* @date: - Morning :: **/public class htmlfilter {/*** @method: filter* @description: static method, html. @param Содержание сообщения, чтобы избежать содержимого* @return после побега*/ public Static String Filter (String Message) {if (message == null) return (null); char content [] = new char [message.length ()]; message.getchars (, message.length (), content,); stringbuffer result = new Stringbuffer (content.length+); (Content [i]) {case '<': result.append ("<"); break; case '>': result.append (">"); break; case '&': result.append ("&"); break; case '"': result.append (" ""); break; defelce: result.append (i]);}} return (result.tostring ();););2. Напишите файл дескриптора библиотеки тегов (TLD) в каталоге Web-Inf и опишите пользовательские функции в файле TLD.
Кодекс эльфункции .tld выглядит следующим образом:
<? xml version = "." Encoding = "utf-"?> <taglib version = "." xmlns = "http://java.sun.com/xml/ns/jee" xmlns: xsi = "http://www.w.org//xmlschema-instance" xsi: schemaLocation = "http://java.sun.com/xml/nsjelectocation web-jsptaglibrary __. xsd "> <tlib-version>. </tlib-version> <short-name> el function </short-name> <!-ссылочный URI для пользовательской библиотеки функций EL может быть цитирована так же на странице JSP: < %@Taglib uri ="/eflunction "Prefix =" FN " %>-> <Ru-uri> <uri> <uri> <uri> <uri> <uri> <uri> <cri> <crot@@taglib uri ="/eflunction "! Элемент используется для описания пользовательской функции EL-> <FUNCTION> <SOMPANTION> HTML TAG MEDENCATE MEDENCATION </description> <!-<mame> Дочерний элемент используется для указания имени EL Custom Function-> <mame> Filter </name> <!-<Функция-класс> Дочерний элемент используется для указания полного Имя класса Java. -> <fficence-class> me.gacl.util.htmlfilter </function-class> <!-<function-signature> Дочерний элемент используется для указания подписи статического метода в классе Java. Подпись метода должна указывать тип возвращаемого значения метода и тип каждого параметра, и каждый параметр разделен с запятой. -> <FUNCTION-SIGNATURE> java.lang.string Filter (java.lang.string) </function-signature> </function> </taglib>
3. Импорт и используйте пользовательские функции на странице JSP
<%@ page language="java" import="java.util.*" pageEncoding="UTF-"%><%--Introducing EL custom function library--%><%@taglib uri="/ELFunction" prefix="fn" %><!DOCTYPE HTML><html><head><title>Calling Java methods using EL</title></head><body><%--Calling Методы фильтра с использованием el-%> $ {fn: filter ("<a href = ''> diand </a>")} </body> </html> Результаты работы следующие:
1.6. Вещи, на которые следует отметить при разработке функции EL
После написания файла описания библиотеки тегов вам необходимо разместить его в любом подкаталоге, кроме классов и каталогов LIB в каталоге <веб-приложения>/Web-Inf или в каталоге Web-Inf.
Элемент <curi> в файле TLD использует URI, который определяет файл TLD. Этот URI необходимо использовать для представления файла описания библиотеки тегов в файле JSP.
Элемент <ffact> используется для описания пользовательской функции EL, где:
Дочерний элемент <mame> используется для указания имени EL Custom Function.
Дочерний элемент <Function> дочерний элемент используется для указания полного имени класса Java.
Дочерний элемент <функции-signature> используется для указания подписи статического метода в классе Java. Подпись метода должна указывать тип возвращаемого значения метода и тип каждого параметра, и каждый параметр разделен с запятой.
1.7. Эль -мер предосторожности
EL Expressions - это метод в спецификации JSP 2.0. Поэтому, если вы хотите правильно проанализировать выражения, вам необходимо использовать веб -сервер, который поддерживает технологию Servlet2.4/JSP2.0.
Примечание: некоторые серверы Tomcat не могут использовать EL Expressions
(1) обновить до Tomcat6
(2) Добавить < %@ page iselignored = "false" %> к JSP
1.8. EL Expressions сохраняют ключевые слова
Так называемое зарезервированное слово означает, что при названии переменных следует избегать вышеупомянутых имен, чтобы избежать ошибок во время компиляции программы. Есть так много резюме о содержании выражений EL.
Приведенный выше контент обеспечивает подробное введение в соответствующие знания о выражениях Javaweb EL с помощью примеров. Я надеюсь, что это будет полезно для вас. В то же время я хотел бы поблагодарить вас за вашу поддержку сайта wulin.com!