>  기사  >  Java  >  Java의 EL 표현식에 대한 간략한 소개(그림)

Java의 EL 표현식에 대한 간략한 소개(그림)

黄舟
黄舟원래의
2017-07-24 15:33:5530126검색

EL의 전체 이름은 Expression Language입니다. 이 글에서는 주로 EL 표현식의 주요 기능과 내용을 소개합니다. 관심 있는 친구들은 꼭 살펴보시기 바랍니다.

JSP 페이지에서는 EL 표현식의 사용을 지원합니다. 언어. EL 표현식의 주요 기능은 다음과 같습니다.

 ① 데이터 획득

 ② 작업 수행

 3 EL 표현식을 사용하는 11개의 암시적 객체

  Java 메소드 호출.

물론 EL 표현식을 JSTL 태그와 함께 사용하여 반복 등의 다른 기능을 표시할 수도 있습니다.

먼저 EL 표현식을 사용하여 데이터를 얻는 방법을 살펴보겠습니다.

JSP 페이지에서 ${identifier} 형식을 사용하는 것은 데이터를 얻기 위해 서블릿에서 pageContext.findAttribute("식별자")를 호출하도록 JSP 엔진에 알리는 것입니다. 특히 식별자는 각 도메인에서 개체나 속성을 찾는 키로 사용됩니다. 발견되면 문자열 형태로 반환되어 JSP 페이지에 표시됩니다. 발견되지 않으면 빈 문자열 ""로 표시됩니다. 이는 f2d3dab12c0dba440a0da5808b664cb4 또한 EL 표현식이 이 태그보다 더 간단하다는 것을 보여줍니다.

예제 1: 도메인에서 일반 데이터 가져오기


 <%
   String name = "Ding";
   request.setAttribute("personName", name);
  %>  
  ${personName }

브라우저에서 관찰:

 

예 2: 도메인에서 개체 또는 속성 가져오기


 <%
  Person p = new Person("Ding",25);
   request.setAttribute("person", p);
  %>  
  ${person }   <br>
  ${person.name } <br>

브라우저에서 관찰 :

예 3: 객체에서 객체의 속성 가져오기

도메인 패키지에 있는 두 개의 JavaBeans:


public class Person { 
  private String name;
  private int age;
 private Address address; 
 。。。省略各个属性的get和set方法
  } 
 public class Address {
 private String city;  
  。。。省略city属性的get和set方法
 }

JSP 페이지의 코드는 다음과 같습니다.


 <%
    Person p = new Person();
   Address a = new Address();
   a.setCity("Amoy");
   p.setAddress(a);
   request.setAttribute("person", p);
  %> 
  ${person.address.city }

브라우저에서 관찰:

 

참고: 이러한 종류의 객체에 있는 속성은 여전히 ​​객체입니다. 속성 이름이 JSP에서 일관되어야 한다는 점에 특히 주의하세요. 그렇지 않으면 예외가 발생합니다.

예 3-2: 웹 프로젝트에서 EL 표현식을 사용하여 현재 웹 프로젝트 경로 가져오기


 ${pageContext.request.contextPath}

EL 표현식의 값은 다음과 같습니다.

표현식이 맨 앞에 표시됩니다. 이미 슬래시 "/"입니다. 여기 EL 표현식의 "pageContext"는 EL의 암시적 개체입니다. 자세한 내용은 다음 블로그를 참조하세요.

예 4: 목록 컬렉션에서 요소 제거


 <%
   List<Person> personList = new ArrayList<Person>();
  personList.add(new Person("Ding",25));
  personList.add(new Person("LRR",24));
  request.setAttribute("persons",personList);
  %>  
  ${persons[0].name } love ${persons[1].name}

브라우저에서 관찰:

예 5: 지도 컬렉션에서 요소 제거


 <%
   Map<String,Person> personMap = new HashMap<String,Person>();
  personMap.put("p1",new Person("Ding",25));
   personMap.put("p2",new Person("LRR",24));   
  request.setAttribute("pMap", personMap);
  %>  
  ${pMap.p1.name } <br>
  love <br>
  ${pMap[&#39;p2&#39;].name }

에서 관찰 browser:

지도 컬렉션의 속성이나 키에 해당하는 값을 가져오기 위해 "."를 사용하는 것 외에도 "['identifier']"를 사용하여 가져올 수도 있음을 알 수 있습니다(참고 대괄호 안의 작은따옴표) 이는 특히 식별자가 숫자인 경우 "."를 사용하면 오류가 보고되지만 "['identifier']"를 사용하면 오류가 보고되지 않습니다.

객체의 필드가 get 메소드를 제공하므로 EL 표현식은 객체의 속성을 얻을 수 있으므로 속성이 됩니다. EL은 객체의 속성만 얻을 수 있고 객체의 필드는 얻을 수 없습니다. 명확하다.

EL 표현식의 단점: 목록 컬렉션이든 지도 컬렉션이든 EL 표현식을 사용하여 컬렉션을 반복할 수 없으므로 컬렉션을 반복해야 하는 경우 JSTL 태그와 함께 EL 표현식을 사용해야 합니다.

 EL 표현식은 산술, 논리 또는 관계 연산 등의 연산을 지원합니다.

구문: ${optional 표현식} 

(여기에서는 산술 연산자는 생략됨)

예제 6:


 <%
   request.setAttribute("username", "root");
   request.setAttribute("password", "123");
  %>
  ${username == "root" && password == "123" }

브라우저에 표시됨: true.

위의 세 가지 단순 연산자 외에도 EL 표현식은 빈 연산자 및 이진 표현식도 지원합니다(표현식? 값 1: 값 2)

빈 연산자: 개체가 null인지 또는 무엇인지 감지합니다. 데이터가 ""인지 여부 빈 문자열

예 7:


 <%
   request.setAttribute("person", null);
    request.setAttribute("address", "");
   request.setAttribute("user", new User());
  %>
  ${empty(person)}  <br>
  ${empty(address)} <br>
  ${empty(user)}   <br>

브라우저에서 관찰하세요:

 

二元表达式:

例8:


 <%
   User user = new User();
   user.setUsername("fjdingsd");
   pageContext.setAttribute("user", user);
  %>  
 欢迎您:${user!=null ? user.username : &#39;&#39; }

浏览器中观察:

  

  上面这个例子使用EL表达式的二元表达式,如果user对象不为null,则输出该对象中的username属性,否则输出空字符。 

  二元表达式的另一种用途还可以用来做数据回显,假设有一个用户要修改其注册信息,那么服务器(或从数据库)在返回其数据到显示页面时,应该在他编辑过的信息重新显示出来。

例9: 


<%
   request.setAttribute("gender", "female");
  %>
  <input type="radio" name="gender" value="male" ${gender==&#39;male&#39;?&#39;checked&#39;:&#39;&#39; }>男    
  <input type="radio" name="gender" value="female" ${gender==&#39;female&#39;?&#39;checked&#39;:&#39;&#39; }>女

浏览器中显示:  

위 내용은 Java의 EL 표현식에 대한 간략한 소개(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.