Топ-100Expression Language (EL) in JSP - CodOrbits
LogoCodOrbits

Раздел: JSP

В этом разделе вы узнаете, как использовать JavaServer Pages (JSP) для генерации HTML-контента на стороне сервера.

Все разделы
Иконка JSP

Expression Language (EL) in JSP

Last updated: 10 мая 2025 г.

В прошлом уроке мы извлекали созданный в контроллере бин с помощью actioBean.

Чтобы для создания и получения бина не писать вот так:

<jsp:useBean id=”someuser” class=”com.someclasses.User” scope=”application”/>

<jsp:getProperty name=”someuser” property=”name”/>

извлекать атрибуты скоупов можно просто используя Expression language.

Изменим View из предыдущего урока вот таким образом:

1<!-- здесь извлекаем из сервлета
2     полученный в нем из модели объект someuser -->
3<html>
4<head>
5    <title>EL JSP</title>
6</head>
7<body>
8    <!-- Чтобы не писать
9         <jsp:useBean id="someuser" class="com.someclasses.User" scope="application"/>
10         и <jsp:getProperty name="someuser" property="name"/>
11         извлекать атрибуты скопов можно просто
12         используя Expression language. -->
13
14    <!-- Просто имя атрибута (экземпляра класса User
15         положенного в контекст в контроллере). Из него достаем
16         поле этого экземпляра. -->
17    ${someuser.name}
18</body>
19</html>

Запускаем контроллер:

Он, опять таки, создает атрибут с именем someuser, в котором находиться объект класса User, извлеченный контроллером через модель.

Переходим на View и видим, что Expression Language сработал и вывелось имя из объекта в аттрибуте someuser:


Конкретный скоуп

По дефолту (как было выше) проверяются все атрибуты всех скоупов, пока не найдет someuser, но можно задать скоуп, в котором хотим искать. В нашем случае скоуп контекста (applicationScope)

Пример программы:

1<html>
2<head>
3    <title>EL JSP</title>
4</head>
5<body>
6${applicationScope.someuser.name}
7</body>
8</html>

Вывод такой же:


Другие возможности EL

Также с помощью EL можно делать много чего другого. Смотри пример.

Изменим контроллер:

1import com.someclasses.*;
2import java.io.IOException;
3import java.io.PrintWriter;
4import javax.servlet.*;
5import javax.servlet.http.*;
6import javax.servlet.annotation.*;
7import java.util.*;
8
9@WebServlet("/MVC_Controller")
10public class MVC_Controller extends HttpServlet {
11    MVC_Model model = new MVC_Model();
12    protected void doGet(HttpServletRequest req,
13                         HttpServletResponse resp)
14                         throws ServletException, IOException {
15        //Создадим список
16        List<String> arrlist = new ArrayList<>();
17        //Добавим туда пару значений
18        arrlist.add("FirstStr");
19        arrlist.add("<h2>Hello!!</h2>");
20        //Добавляем список в атрибут контекста
21        //и он будет доступен на View. С этим списком
22        //можно будет работать с помощью EL
23        req.getServletContext().setAttribute("arrlist",arrlist);
24        Cookie cokie = new Cookie("name","Jonny");
25        //Этот cookie извлечен на view с помощью EL
26        resp.addCookie(cokie);
27    }
28}

Изменим View:

1<html>
2<head>
3    <title>EL JSP</title>
4</head>
5<body>
6<!--Можем работать с коллекциями
7созданными в контроллере-->
8${arrlist[1]}
9<!--Также можно записывать выражения
10используя стандартные операторы логические,
11арифметические и отношения-->
12${((3+7) == 10) && ((8+1) == 10)}
13<!--EL можно использовать в бинах-->
14<jsp:useBean id="someuser" class="com.someclasses.User"/>
15<jsp:setProperty name="someuser" property="name" value='${arrlist[1]}'/><!--здесь-->
16<jsp:getProperty name="someuser" property="name"/>
17<!--также можем извлекать cookie
18или параметры с помощью param-->
19${cookie.name.value}
20</body>
21</html>

Откроем страницу контроллера:

Откроем View:


Отключение EL на странице

С помощью <%@ page isELIgnored="false"%> можно отключить все EL выражения на странице.

Поставив перед конкретным EL выражением "\\" можно отключить какое либо конкретное EL выражение

Пример программы:

1<!--отключить все EL на странице 
2можно установив в true-->
3<%@ page isELIgnored="false"%>
4<html>
5<head>
6    <title>EL JSP</title>
7</head>
8<body>
9<!-- "\" - отключить конкретное EL выражение-->
10\${arrlist[1]}
11</body>
12</html>

Ясное дело, если мы откроем эту страницу, на ней ничего не будет.

Example

Выводы:

После изучения MVC теперь можно лучше понять зачем нужны jsp.

Java код на jsp страницах использовать крайне не рекомендуется.

Java код лучше пусть используется в контроллере.

На View используются только экшн теги, EL и еще стандартная библиотека тегов jsp, о них позже. Эти инструменты лучше понятны html разработчику, который делает View, а java код разработчику контроллера


Следующие уроки

Работа с JSP Standard Tag Library (JSTL)

20
мин.

Similar Articles Icon
Divider

Что такое шаблоны проектирования? Шаблон Factory

16
мин.

Similar Articles Icon
Divider

Шаблон Singleton: обеспечение единственного экземпляра

14
мин.

Similar Articles Icon