익스프레션 언어는 식을 중심으로 코드를 기술하는 언어이다.
연산자와 피연산자의 조합을 ${}로 둘러싸서 표현한다.
| ${cnt+1} //익스프레션 언어의 식 <%= cnt+1 %>//익스프레션의 식 | cs |
이런 형태를 EL 식 이라고 한다.
익스프레션에서 사용된 cnt는 자바의 변수 이름이고 EL식에서 사용된 cnt는 변수가 아니다.
EL 식에 포함된 데이터 이름은 기본적으로 애트리뷰트의 이름으로 해석된다.
| <% int sum = {...} request.setAttribute("RESULT", new Integer(sum)); // 애트리뷰트에 sum의 결과 저장 %> <%=request.getAttribute("RESULT")%> //익스프레션으로 애트리뷰트 값 출력 ${RESULT} //EL식으로 애트리뷰트 값 출력 | cs |
데이터 하나로만 구성된 EL식
서블릿과 JSP 에서 사용할수 있는 애트리뷰트의 종류는 네가지이다.
EL식에서 주의해야 할 점은 네종류의 애트리뷰트 중 어느것 으로도 해석될수 있다는 것이다.
페이지안에 이름이 같고 종류가 다른 애트리뷰트가 있다면 익스프레션 언어에서 정해놓은 순서대로 해석된다.
이 순서는 사용 범위가 좁은 애트리뷰트부터 점점 더 사용 범위가 넓은 애트리뷰트 순으로 진행된다.
page애트리뷰트 -> request애트리뷰트 -> session 애트리뷰트 -> appliction애트리뷰트
이순서에 상관 없이 특정한 종류의 애트리뷰트를 선택해서 출력하고 싶다면
그 데이터영역에 해당하는 scope 라는 내장 객체를 표시한다.
| ${pageScope.RESULT} //page애트리뷰트 ${requestScope.RESULT} //request애트리뷰트 ${sessionScope.RESULT} //session애트리뷰트 ${applictionScope.RESULT} //page애트리뷰트 | cs |
익스프레션 언어의 내장 객체
param 웹브라우저 로부터 입력된 데이터의 집합
| ${param.NUM} ${param["COLOR"]} | cs |
param은 웹 브라우저에서 <FORM> 엘리먼트를 통해 입력된 데이터를 가져올 때 사용하는 내장객체이다.
이 객체의 사용방법은 두가지 이다. 객체의 이름뒤에 마침표를찍고 해당데이터이름을 쓰거나
객체의 이름뒤에 대괄호를 입력하고 그안에 작은 따옴표나 큰 따옴표로 묶은 데이터 이름을 적는다.
<FORM>엘리먼트를 통해 똑같은 이름의 데이터가 여러개 입력될 경우 ex <CHECKBOX>,<SELECT>
그럴 때는 param 내장 객체 대신 paramValues 라는 내장 객체를 사용한다.
| ${paramValues.ANIMAL[0]} ${paramValues["ANIMAL"][1]} | cs |
pageContext
EL식을 이용해서 pageContext의 get 메서드를 호출하려면
메서드 이름 앞에있는 get이라는 단어를 때고 그다음에 있는 첫 문자를 소문자로 변경한 이름을 사용한다.
| ${pageContext.request} //getRequest 메서드 ${pageContext["request"]} //getRequest 메서드 | cs |
| ${pageContext.request.requestURI} ${pageContext["request"]["requestURI"]} ${pageContext.request["requestURI"]} ${pageContext.["request"].requestURI} //getRequestURI 리턴값을 가져오는 EL 식 | cs |
익스프레션 언어의 연산자
| ${gender=="female"} //두값의 같으면 true 다르면false ${"CAR"<"CAT"} //유니코드에 따른 사전식 비교 CAR가 먼저이므로true ${"CAT">"DOG"} //CAT이 먼저이므로 false | cs |
마침표 연산자
마침표연산자로 가리킬 수 있는 데이터
배열, java.util.List 객체의 데이터 항목,java.util.Map 객체의 데이터 항목,자바빈 프로퍼티
배열,리스트 인터페이스,Map인터페이스 출력
| request.setAttribute("WINNER",winner)//배열을 애트리뷰트로 저장 ${WINNERS[0] //배열 출력 ArrayList<String> items = new ArrayList<String> list객체 request.setAttribute("FRUITS",items)//list객체 애트리뷰트로 저장 ${FRUITS[2]} //list객체 출력 request.setAttribute("ADDRESS",map) //map객체 저장 ${ADRESS[param.NAME] // map객체 내에서 데이터 이름에 해당하는 항목을 찾아 | cs |
자바빈: JavaBean 규격서에 따라 작성된 자바 클래스,
파라미터가없는 생성자가 존재해야함,
멤버변수에 접근할때 메서드를통해접근해야함(set,get)
자바빈 프로퍼티 출력
| request.setAttribute("PRODUCT",product) //자바빈객체 저장 ${PRODUCT.name} //자바빈 프로퍼티 ${PRODUCT.price} | cs |