Expression Language (EL) в JSP

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

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

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

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

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

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

EL JSP ${someuser.name}

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

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

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


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

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

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

EL JSP ${applicationScope.someuser.name}

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


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

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

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

import com.someclasses.*; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.util.*; @WebServlet(“/MVC_Controller”) public class MVC_Controller extends HttpServlet { MVC_Model model = new MVC_Model(); protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //Создадим список List arrlist = new ArrayList<>(); //Добавим туда пару значений arrlist.add(“FirstStr”); arrlist.add(“

Hello!!

“); //Добавляем список в атрибут контекста //и он будет доступен на View. С этим списком //можно будет работать с помощью EL req.getServletContext().setAttribute(“arrlist”,arrlist); Cookie cokie = new Cookie(“name”,”Jonny”); //Этот cookie извлечен на view с помощью EL resp.addCookie(cokie); } }

Изменим View:

EL JSP ${arrlist[1]} ${((3+7) == 10) && ((8+1) == 10)} ${cookie.name.value}

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

Откроем View:


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

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

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

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

<%@ page isELIgnored="false"%> EL JSP \${arrlist[1]}

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

Example

Выводы:

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

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

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

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

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

Полное руководство по JSTL: теги c:forEach, c:out, c:import и другие. Примеры использования JSP Standard Tag Library в веб-разработке.
Time to read: 20

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

Узнайте что такое шаблоны проектирования и как паттерн Factory помогает создавать однотипные объекты. Оптимизируйте создание экземпляров классов.
Time to read: 16

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

Singleton в Java: гарантия одного экземпляра класса. Пример. Сравнение с статическим классом и преимущества.
Time to read: 14