EL의 전체 이름은 jsp2.0의 가장 중요한 특징 중 하나 인 표현 언어 (표현 언어)입니다. EL 표현식은 JSP 페이지에서 Java 스크립트를 제거하기 위해 응용 프로그램의 데이터에 액세스하는 데 사용될 수 있습니다.
EL 표현의 구문
예를 들어, x+y는 {x+y}로 쓸 수 있습니다.
EL의 키워드
다음은 EL의 키워드이며 식별자로 사용할 수 없습니다.
및, Eq, Gt, True, instanceof 또는, le, false, empty, lt, ge, null, div, mod
1. El 표현 소개
El의 이름은 표현 언어입니다. EL의 주요 기능 :
1. 데이터를 얻습니다
EL 표현식은 주로 JSP 페이지의 스크립트 표현식을 대체하여 Java 객체를 검색하고 다양한 유형의 웹 도메인에서 데이터를 얻는 데 사용됩니다. (특정 웹 도메인의 객체, 액세스 Javabean 속성, 액세스 목록 수집, 액세스 맵 수집, 액세스 어레이)
2. 작업을 수행하십시오
EL 표현식을 사용하면 JSP 페이지에서 일부 기본 관계형 작업, 논리적 작업 및 산술 작업을 수행하여 JSP 페이지에서 간단한 논리적 작업을 완료 할 수 있습니다. $ {user == null}
3. 웹 개발을위한 일반적인 객체를 얻으십시오
EL 표현식은 일부 암시 적 객체를 정의합니다. 이러한 암시 적 개체를 사용하여 웹 개발자는 일반적으로 사용되는 웹 객체에 대한 참조를 쉽게 얻을 수 있으므로 이러한 객체에서 데이터를 얻을 수 있습니다.
4. Java 메소드에 전화하십시오
EL 표현을 통해 사용자는 JSP 페이지의 EL 표현을 통해 Java 클래스의 메소드를 호출하기 위해 사용자 정의 EL 기능을 개발할 수 있습니다.
1.1. 데이터를 얻습니다
EL Expression을 사용하여 데이터 구문을 얻으십시오 : "$ {Identifier}"
EL 표현식 명령문이 실행되면 PageeContext.FindAttribute 메소드를 키워드로 사용하여 페이지, 요청, 세션 및 응용 프로그램의 4 개의 필드에서 해당 객체를 찾습니다. 발견되면 해당 객체를 반환합니다. 찾을 수없는 경우 ""(NULL이 아니라 빈 문자열이라는 점에 유의하십시오).
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.domain.person"%> <%@page import = "me.gacl.domain.address"%> <! doctype html> <html> <head> <title> El Expression은 데이터를 가져옵니다 </title> </head> <body> <%request.setattribute ( "lonely wolf");%> <%-$ {name}; $ {name} <hr> <!-JSP 페이지에서 el expression을 사용하여 Bean의 속성을 사용하여-> <% person p = new person (); p.setage (); request.setattribute ( "person", p);%> eL 표현식을 사용하여 Bean의 속성을 얻으려면 : $ {person.age} <Hr> <! . . . . . . . . -> <% person = new person (); add canglang "); person p = new person (); p.setname ("White Tiger God Emperor "); list <person> list = new arraylist <person> (); list.add (p); list.add (p); request.setattribute ("List),%> <!-목록 [list [list []]. -> <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"); request.setattribute ( "map", map); -> $ {map.c} $ {map [ ""]} <hr> <!-반복 맵 컬렉션-> <c : foreach var = "me"items = "$ {map}"> $ {me.key} = $ {me.value} <br/> </c : foreach> <hr> </html> 작동 효과는 다음과 같습니다.
1.2. 운영을 실행하십시오
구문 : $ {Operation Expression}, EL Expression은 다음 연산자를 지원합니다.
1. 관계형 운영자
2. 논리 연산자 :
3. 빈 연산자 : 물체가 무효인지 확인 (빈)
4. 이진 표현 : $ {user! = null? user.name : ""}
5. [] 및. 운영자
EL 표현식을 사용한 작업 수행의 예 :
<%@page language = "java"import = "java.util.*"pageencoding = "utf-"%> <%@taglib uri = "http://java.sun.com/jsp/jstl/core"prefix = "c"%> <%@page import = "me.gacl.domain.user"<! doctype html> <html> <head> <title> El Expression Operator </title> </head> <body> <h> El Expression : </h> 추가 작업 : $ {+} <br/> subtraction 작업 : $ {-} <br/> 다중 연산 : $ {*} <br/> divide operation : $ {/h> h> r 표현식 관계. 작업 : </h> <%-$ {user == null} 및 $ {user eq null}; 동등한-%> $ {user == null} <br/> $ {user eq null} <br/> $ {user eq null} <br/> el expression은 객체가 null (빈)인지 확인하기 위해 빈 연산자를 사용하여 <string> list = new ArrayList <string> (); list.add ( "gacl"); list.add ( "xdp"); request.setAttribute ( "list", list);%> <%-빈 연산자를 사용하여 객체가 null (empty)인지 확인하십시오 (객체가 null)인지 확인하십시오. 항목 = "$ {list}"> $ {str} <br <br/> </c : foreach> </c : foreach> </c : if> <br/>%list <string> emptylist = null;%> <%-빈 연산자를 사용하여 객체가 null인지 확인하십시오 (객체가 null)-%> <c : if test = "$ {emptylist)}"> 데이터가 없습니다. </c : if> <br/> <h> 이진 표현식은 EL Expressions </h> <% session.setattribute ( "사용자", 새 사용자 ( "Lonely Ganglang"));%> $ {user == null? "죄송합니다.": user.username} <br/> <h> el Expression Data echo </h> <% user user = new user (); user.setgender ( "male"); // data echo request.setattribute ( "user", user);%> <input type = "radio"name = "male" " $ {user.gender == 'male'? 'checked': ''}> male <input type = "radio"name = "gender"value = "여성"$ {user.gender == 'female'? 'checked': '}> 여성 <br/> </html>작업 결과는 다음과 같습니다.
1.3. 웹 개발을위한 일반적인 객체를 얻으십시오
EL Expression Language는 11 개의 암시 적 객체를 정의합니다. 이러한 암시 적 객체를 사용하면 웹 개발에서 몇 가지 일반적인 객체를 쉽게 얻고 이러한 객체의 데이터를 읽을 수 있습니다.
구문 : $ {암시 적 개체 이름} : 객체에 대한 참조 받기
EL 표현식의 암시 적 객체 11을 테스트합니다.
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-"%> <! doctype html> <html> <head> <title> el complicit object</title></head><body><br/>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //map%>${pageScope.name}<br/>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //map%>${sessionScope.user}<br/>------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 이 표현은 종종 데이터 에코에 사용됩니다 -> <form action = "$ {pagecontext.request.contextpath}/servlet/registerservlet"method = "post"> <input type = "text"name = "username"value = "$ {input type}"> 입력 유형 = "제출" value="register"></form><br/>---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- http : // localhost : /javaweb_el_study_/eldemo.jsp? like = aaa & like = bb-> $ {paramvalues.rike []} $ {paramvalues.rike []} <br/>---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- , for 예제 수락 인코딩, headerValues["Accept-Encoding"]--%>${header["Accept-Encoding"]}<br/>-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 모든 HTTP 요청 헤더 필드를 저장하는 맵 객체. 요청 매개 변수의 경우 문자열 [] 배열을 반환합니다. 예를 들면 다음과 같습니다. headervalues.accept 문자열 [] 배열을 반환합니다. Headervalues.Accept []는 배열에서 첫 번째 값을 가져옵니다-%> $ {headervalues.accrect []} <br/> <%-$-$ {headervalues.accept-encoding}이 방법을 작성하면 Headervalues를 테스트 할 때 오류 가보고됩니다. accept-encoding과 같은 헤더에 "-"가있는 경우, Headervalues [ "accept-encoding"] headervalues [ "accept-encoding"] []는 문자열 [] 배열을 반환합니다. Headervalues [ "허용 인코딩"] [] []는 첫 번째 값을 취합니다 array--%>${headerValues["Accept-Encoding"][]}<br/>------------------------------------------------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. -> $ {cookie.jsessionid.value} // 맵을 저장합니다 cookies<br/>------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Web.xml 파일에서 초기화 매개 변수를 구성하십시오 -> <CENTEXT-PARAM> <PARAM-NAME> XXX </PARAM-NAME> <Param-value> yyyy </param-value> </context-param> <context-param> <param-name> root </param-name> <param- value>/javaweb_el_study _ </param-value> </conte-param>-get map in 초기화 매개 변수를 저장하기위한 ServletContext -%> $ {initparam.xxx} <br/> $ {initparam.root} </body> </html> RegisterServlet 코드는 다음과 같습니다.
packing me.gacl.web.controller; import java.io.ioexception; import javax.servlet.servletxception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpervletrequest; import javax.servlet.httprongronger; 사용자 등록을 처리하는 httpservlet {/** 메소드를 확장합니다*/public void doget (httpservletrequest request, httpservletreponse response) throws servletexception, ioexception {//, receing parameter string username = request.getParameter ( "username"); requestAttribute ( "username", username) 요청 객체*에 사용자 이름을 저장하려면 eldemo.jsp 페이지에서 $ {param.username}을 사용하여 요청 개체*/request.getRequestDispatcher ( "/eldemo.jsp")에서 사용자 이름 매개 변수의 값을 얻을 수 있습니다. dopost (httpservletrequest request, httpservletresponse 응답) servletexception, ioexception {doget (request, response);}} 테스트 결과는 다음과 같습니다.
알아채다:
헤더 및 헤드베 발루를 테스트 할 때, accept-encoding, 헤더 [ "허용 인코딩"] 및 Headervalues [ "수락 인코딩"]와 같은 헤더에 "-"가있는 경우.
예를 들어 쿠키를 테스트 할 때 $ {cookie.key}는 쿠키 객체를 사용합니다. 쿠키의 이름과 가치에 액세스하면 $ {cookie.key.name} 또는 $ {cookie.key.value}가 있어야합니다.
1.4. EL을 사용하여 Java 메소드를 호출하십시오
EL Expression Syntax를 사용하면 개발자가 Java 클래스의 메소드를 호출하기 위해 사용자 정의 기능을 개발할 수 있습니다. 구문 : $ {prefix : method (params)}
EL 표현식에서 호출 할 수있는 유일한 것은 Java 클래스의 정적 방법입니다. 이 Java 클래스의 정적 방법은 EL 표현식에서 호출하기 전에 TLD 파일에 설명되어야합니다.
EL 사용자 정의 기능은 EL 표현의 기능을 확장하는 데 사용되며 EL 표현식은 일반 Java 프로그램 코드가 완료 될 수있는 기능을 완료 할 수 있습니다.
1.5. EL 기능 개발 단계
일반적으로 EL 사용자 정의 기능의 개발 및 적용에는 다음 세 단계가 포함됩니다.
1. Java 클래스의 정적 메소드를 작성하십시오
2. TLD (Tag Library Descriptor) 파일을 작성하고 TLD 파일에 사용자 정의 기능을 설명하십시오.
3. JSP 페이지에서 사용자 정의 기능을 가져오고 사용하십시오
예 : HTML 태그를 피하기위한 EL 기능 개발
1. HTML Escape Processing Tool Class를 작성하고 정적 처리 방법을 추가하여 툴 클래스에서 HTML 태그를 피하십시오.
package me.gacl.util;/*** @classname : htmlfilter* @description : html 탈출 프로세싱 도구 클래스 : Lonely Canglang* @date : - 오전 :: **/public class htmlfilter {/*** @Method : filter* @DESTING* @PASTOR : HTML Taging* @PASTORING* @PASTORING* @DATHOWEN 탈출 후* @return 컨텐츠*/ public static string filter (문자열 메시지) {if (message == null) return (null); char content [] = new char [message.length ()]; message.getch (, message.length (), content,); StringBuffer result = new StringBuffer (content.length+); i <length (i++) {i); {case '<': result.append ( "<"); break; case '>': result.append ( ">"); break; case '&': result.append ( "&"); break; case ' "": result.append ( ""); break; default : result.append (content [i]);}} return (result.tostring ();}}.2. Web-INF 디렉토리에 TLD (Tag) 파일을 작성하고 TLD 파일의 사용자 정의 기능을 설명하십시오.
elfunction.tld의 코드는 다음과 같습니다.
<? xml 버전 = "." 인코딩 = "utf-"?> <taglib 버전 = "." xmlns = "http://java.sun.com/xml/ns/jee"xmlns : xsi = "http://www.w.org//xmlschema-instance"xsi : schemalocation = "http://java.sun.com/xml/js/jee Web-Jsptaglibrary __. xsd "> <tlib-version>. -> <uri>/elfunction </uri> <!-<function> 요소는 EL 사용자 정의 함수를 설명하는 데 사용됩니다-> <function> <description> HTML 태그 탈출 처리 방법 </descriation> <!-<name> 하위 요소는 EL 사용자 정의 기능의 이름을 지정하는 데 사용됩니다.> <name> 필터 </name> <!-<function-class> 완전한 Java 클래스를 지정하는 데 사용됩니다. -> <function-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-"%> <%-el custom function library 소개-%> <%@ taglib uri = "/elfunct"prefix = "fn"%> <! doctype html> <html> <title> Calling El </head> <calling </head> <java 방법을 사용합니다. el-%> $ {fn : 필터를 사용한 필터 메소드 ( "<a href = ''> diand </a>") </body> </html> 작업 결과는 다음과 같습니다.
1.6. EL 기능을 개발할 때 주목해야 할 사항
태그 라이브러리 설명 파일을 작성한 후 <web application>/web-inf 디렉토리에 배치해야합니다.
TLD 파일의 <uri> 요소는 TLD 파일을 지정하는 URI를 사용합니다. 이 URI는 JSP 파일에 태그 라이브러리 설명 파일을 소개하는 데 사용해야합니다.
<function> 요소는 EL 사용자 정의 함수를 설명하는 데 사용됩니다.
<name> 하위 요소는 EL 사용자 정의 기능의 이름을 지정하는 데 사용됩니다.
<function-class> 하위 요소는 완전한 Java 클래스 이름을 지정하는 데 사용됩니다.
<function-signature> child 요소는 Java 클래스에서 정적 메소드의 서명을 지정하는 데 사용됩니다. 메소드 서명은 메소드의 리턴 값 유형과 각 매개 변수의 유형을 나타내야하며 각 매개 변수는 쉼표로 분리됩니다.
1.7. EL 예방 조치
EL 표현식은 JSP 2.0 사양의 기술입니다. 따라서 EL Expressions를 올바르게 구문 분석하려면 Servlet2.4/JSP2.0 기술을 지원하는 웹 서버를 사용해야합니다.
참고 : 일부 Tomcat 서버는 EL 표현식을 사용할 수 없습니다
(1) tomcat6으로 업그레이드
(2) < %@ page iselignored = "false" %>를 JSP에 추가하십시오
1.8. EL 표현식은 키워드를 유지합니다
소위 예약 된 단어는 변수 이름을 지정할 때 프로그램 편집 중에 오류를 피하기 위해 위의 이름을 피해야한다는 것을 의미합니다. EL 표현의 내용에 대한 많은 요약이 있습니다.
위의 내용은 예를 통해 Javaweb El 표현의 관련 지식에 대한 자세한 소개를 제공합니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 동시에 Wulin.com 웹 사이트에 대한 귀하의 지원에 대단히 감사합니다!