Рубрики
Без рубрики

Язык выражений JSP – Пример учебника по JSP EL

Язык выражений JSP. Пример учебника JSP EL. Неявные объекты JSP EL, Операторы JSP EL, Приоритет операторов, Резервные слова, Пример JSTL EL.

Автор оригинала: Pankaj Kumar.

Сегодня мы рассмотрим язык выражений JSP или пример учебника JSP EL.

Язык выражений JSP – JSP EL

В большинстве случаев мы используем JSP для целей просмотра, и вся бизнес-логика присутствует в коде сервлета или классах моделей. Когда мы получаем запрос клиента в сервлете, мы обрабатываем его, а затем добавляем атрибуты в область запроса/сеанса/контекста, которые будут извлечены в коде JSP. Мы также используем параметры запроса, заголовки, файлы cookie и параметры инициализации в JSP для создания представлений ответов.

В предыдущих сообщениях мы видели, как мы можем использовать скриптлеты и выражения JSP для извлечения атрибутов и параметров в JSP с помощью кода java и использовать его для просмотра. Но для веб-дизайнеров код Java трудно понять, и именно поэтому в спецификации JSP 2.0 был введен Язык выражений (EL), с помощью которого мы можем легко получать атрибуты и параметры, используя HTML, такие как теги.

Синтаксис языка выражений ${name} , и мы увидим, как мы можем использовать их в коде JSP.

Читайте: Учебник по JSP для начинающих

Неявные объекты JSP EL

Язык выражений JSP предоставляет множество неявных объектов, которые мы можем использовать для получения атрибутов из разных областей и значений параметров. Список приведен ниже.

Карта Карта, содержащая набор атрибутов с областью действия страницы. Область просмотра страниц
Карта Используется для получения значения атрибута с областью запроса. Область запросов
Карта Используется для получения значения атрибута с областью действия сеанса. Область сеансов
Карта Используется для получения значения атрибутов из области приложения. область применения
Карта Используется для получения значения параметра запроса, возвращает одно значение парам
Карта Используется для получения значений параметров запроса в массиве, полезно, когда параметр запроса содержит несколько значений. Значения параметров
Карта Используется для получения информации о заголовке запроса. заголовок
Карта Используется для получения значений заголовка в массиве. значения заголовка
Карта Используется для получения значения файла cookie в JSP печенье
Карта Используется для получения параметров инициализации контекста, мы не можем использовать его для параметров инициализации сервлета init Param
Текст страницы То же самое, что и неявный объект PageContext JSP, используемый для получения запроса, ссылок на сеансы и т.д. Примером использования является получение имени метода HTTP запроса. Текст страницы

Обратите внимание, что эти неявные объекты отличаются от неявных объектов JSP и могут использоваться только с JSP EL.

Язык выражений JSP – Операторы JSP EL

Давайте рассмотрим операторы EL и поймем, как они интерпретируются и как их использовать.

  1. Оператор доступа к свойствам EL или Оператор точки (.)

    Оператор JSP EL Dot используется для получения значений атрибутов.

    ${firstObj.secondObj}

    В приведенном выше выражении firstObj может быть неявным объектом или атрибутом в области страницы, запроса, сеанса или приложения. Например,

    ${${область запроса.сотрудник.адрес}

    Обратите внимание, что, за исключением последней части EL, все объекты должны быть либо Map, либо Java-компонентом, поэтому в приведенном выше примере RequestScope-это карта, а сотрудник должен быть Java-компонентом или картой. Если область не указана, JSP EL просматривает область страницы, запроса, сеанса и приложения, чтобы найти именованный атрибут.

  2. Оператор JSP EL [] или Оператор доступа к коллекции

    Оператор [] является более мощным, чем оператор точки. Мы также можем использовать его для получения данных из списка и массива.

    Некоторые примеры;

    ${myList[1]} и ${myList[“1”]} одинаковы, мы также можем предоставить индекс списка или массива в качестве строкового литерала.

    ${myMap[expr]} – если параметр внутри [] не является строкой, он оценивается как EL.

    ${myMap[myList[1]]} – [] может быть вложенным.

    ${RequestScope[“foo.bar”]} – мы не можем использовать оператор точки, когда в именах атрибутов есть точки.

  3. Арифметические операторы JSP EL

    Арифметические операторы предусмотрены для простых вычислений в выражениях EL. Это +, -, *,/или div, % или mod.

  4. Логические операторы JSP EL

    Это && (и),

  5. (или) и ! (нет).

    Операторы связи JSP EL

Язык выражений JSP – Приоритет оператора JSP EL

Выражения JSP EL вычисляются слева направо. Приоритет оператора JSP EL указан в таблице ниже от самого высокого до самого низкого.

[ ] .
() – Используется для изменения приоритета операторов.
– (одинарный) нет ! пустой
* / div % мод
+ – (двоичный)
< > <= gt le ge
== не
&& и
|| или
? :

Язык выражений JSP – Резервные слова JSP EL

ge истинный гт lt ле
пустой div,мод нулевой ложный экземпляр

Выше приведены зарезервированные слова, не используйте их в качестве идентификатора в JSP.

Важные моменты языка выражений JSP

  1. Выражения EL всегда заключены в фигурные скобки со знаком$, например ${expr}
  2. Мы можем отключить выражение EL в JSP, установив Директиву страницы JSP Значение атрибута isELIgnored равным TRUE.
  3. JSP EL можно использовать для получения атрибутов, заголовка, файлов cookie, параметров инициализации и т.д., Но мы не можем установить значения.
  4. Неявные объекты JSP EL отличаются от неявных объектов JSP, за исключением PageContext, не путайте.
  5. Неявный объект JSP EL PageContext предоставляется для получения дополнительных свойств из запроса, ответа и т.д., Например, для получения метода HTTP-запроса.
  6. JSP EL поддерживает значение NULL, если данный атрибут не найден или выражение возвращает значение null, оно не создает никаких исключений. Для арифметических операций EL обрабатывает значение null как 0, а для логических операций EL обрабатывает значение null как false.
  7. Оператор [] более мощный, чем оператор точки, потому что мы также можем получить доступ к данным списка и массива, он может быть вложенным, а аргумент [] вычисляется, когда он не является строковым литералом.
  8. Если вы используете Tomcat, выражения EL вычисляются с помощью org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate() метод.
  9. Мы можем использовать функции EL для вызова метода из класса java, подробнее об этом в публикации пользовательских тегов в ближайшем будущем.

Пример JSP EL

Давайте рассмотрим использование EL с помощью простого приложения. Мы установим некоторые атрибуты в разных областях и будем использовать EL для их извлечения и отображения на странице JSP. Структура нашего проекта будет выглядеть так, как показано на рисунке ниже.

Я определил некоторые классы моделей, которые мы будем использовать – интерфейс пользователя, Лицо, реализующее сотрудника, и Адрес, используемый в Сотруднике.

package com.journaldev.model;

public interface Person {
	
	public String getName();
	public void setName(String nm);
}
package com.journaldev.model;

public class Address {

	private String address;

	public Address() {
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
	
	public String toString(){
		return "Address="+address;
	}
}
package com.journaldev.model;

public class Employee implements Person {

	private String name;
	private int id;
	private Address address;

	public Employee() {
	}

	@Override
	public String getName() {
		return this.name;
	}

	@Override
	public void setName(String nm) {
		this.name = nm;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public Address getAddress() {
		return address;
	}

	public void setAddress(Address address) {
		this.address = address;
	}
	
	@Override
	public String toString(){
		return "ID="+id+",Name="+name+",Address="+address;
	}

}

Обратите внимание, что сотрудник и адрес являются javabeans с конструктором без аргументов и методами getter-setter для свойств. Я также предоставил реализацию метода toString (), который мы будем использовать на странице JSP.

Теперь давайте посмотрим код простого сервлета, который установит некоторые атрибуты.

package com.journaldev.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.journaldev.model.Address;
import com.journaldev.model.Employee;
import com.journaldev.model.Person;

@WebServlet("/HomeServlet")
public class HomeServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//Setting some attributes
		Person person = new Employee();
		person.setName("Pankaj");
		
		request.setAttribute("person", person);
		
		Employee emp = new Employee();
		Address add = new Address();
		add.setAddress("India");
		emp.setAddress(add);
		emp.setId(1);
		emp.setName("Pankaj Kumar");
		
		HttpSession session = request.getSession();
		session.setAttribute("employee", emp);
		
		response.addCookie(new Cookie("User.Cookie","Tomcat User"));
		getServletContext().setAttribute("User.Cookie","Tomcat User");
		
		RequestDispatcher rd = getServletContext().getRequestDispatcher("/home.jsp");
		rd.forward(request, response);
	}

}

Давайте определим некоторые параметры инициализации контекста в web.xml дескриптор развертывания.



  JSPELExample
  
  
  AppID
  123
  
  

Код JSP, использующий EL для создания представлений:

Код JSP, использующий EL для создания представлений:

<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII" import="java.util.*"%>





JSP EL Example Home


<% 	List names = new ArrayList();
	names.add("Pankaj");names.add("David");
	pageContext.setAttribute("names", names);
%>
Simple . EL Example: ${requestScope.person}


Simple . EL Example without scope: ${person}

Simple [] Example: ${applicationScope["User.Cookie"]}

Multiples . EL Example: ${sessionScope.employee.address.address}

List EL Example: ${names[1]}

Header information EL Example: ${header["Accept-Encoding"]}

Cookie EL Example: ${cookie["User.Cookie"].value}

pageContext EL Example: HTTP Method is ${pageContext.request.method}

Context param EL Example: ${initParam.AppID}

Arithmetic Operator EL Example: ${initParam.AppID + 200}

Relational Operator EL Example: ${initParam.AppID < 200}

Arithmetic Operator EL Example: ${initParam.AppID + 200}

Когда мы отправляем запрос на вышеуказанный сервлет, мы получаем вывод, как показано на рисунке ниже.