본문 바로가기

나는 엔지니어/JSP

EL ( 익스프레션 언어)

1. EL 의 구성

데이터 이름 하나로만 구성된 식 : ${name}

연산자를 포함하는 식 : ${name + 100}

자바의 정적 메서드를 호출하는 식 : ${m:sqrt(100)} 


애트리뷰트의 종류 

호출할 때 사용하는 내장 변수 

메서드의 소속 

page 애트리뷰트 

pageContext 내장 변수 

javax.servlet.jsp.jspContext Class 

request 애트리뷰트 

request 내장 변수

javax.servlet.ServletRequest Interface

session 애트리뷰트

session 내장 변수

javax.servlet.http.HttpSession Interface 

application 애크리뷰트

application 내장 변수

javax.servlet.ServletContext Interfacle 



2. 애트리뷰트 값 설정 및 가져오기

    설정 : request.setAttribute(이름,값);

    값 취득 : ${RESULT}


3. scope

   만약 이름이 다른 test01.jsp 파일과 test02 파일에서 각각 request.setAttribute("RESULT",100); 코드를 정의하고

   ${RESULT}를 호출한다면 각각의 파일에서 정의한 RESULT 값이 모두 출력된다. 이를 제어하기 위해서 다음과

   같은 scope를 추가적으로 정의 할 수 있다.

   

(p -> r -> s -> a)

사용
범위


↑좁음


↓넓음

이름

scope 이름

해석되는 순서  sample

page

pageScope 

  ${pageScope.RESULT}

request 

requestScope 

  ${requestScope.RESULT}

session 

sessionScope 

  ${sessionScope.RESULT}

application 

applicationScope 

  ${applicationScope.RESULT}


그외 내장 객체

이름 

표현하는 데이터 

param

웹 브라우저로 입력된 데이터 집합


param 는 form 엘리먼트를 통해 입력된 데이터를 가져올 때 사용하는 내장 객체이다.

사용예)

${param.num}  혹은 ${param["num"]} ->  두번째 방법은 이름에 - # 같은 특수문자가 들어 있을때 사용한다. 

paramValues 

 웹 브라우저로 입력된 데이터 집합 ( 똑같은 이름의 데이터가 여럿일 때 사용 ) 


paramValues 는 form 엘리먼트를 통해 입력된 데이터를 가져올 때 사용하는 내장 객체이다.

사용예)


만약 화면에서 체크박스와 같은 복수 데이터를 취급하는 엘리먼트를 사용했을 경우는 아래와 같이 사용한다.

${paramValues.nums[0]} or ${paramValues["nums"][0]} 


그런데 전체 선택항목중 일부만 선택할 경우 위와 같이 고정 인덱스를 사용하면 에러가 발생할 거라 추측이

되지만 EL에서는 데이터가 없어도 에러를 발생시키지 않고, 그냥 해당 데이터를 출력하지 않기만 한다.

header 

 HTTP 요청 메시지에 있는 HTTP 헤더의 집합


사용법은 param과 동일

headerValues 

 HTTP 요청 메시지에 있는 HTTP 헤더의 집합 

 (똑같은 이름의 HTTP 헤더가 여럿일 때 사용)


사용법은 paramValues와 동일

cookie 

 웹 브라우저로부터 전송된 쿠기의 집합

[cookie01.jsp]

<%

Cookie cookie = new Cookie("NAME","CHO");

response.addCookie(cookie);

%>


[cookieDisplay]

cookie name : ${cookie.NAME.value}

initParam 

 웹 애플리케이션의 초기화 파라미터의 집합 


ex)

[web.xml] 에추가

<context-param>

      <param-name>DB_NAME</param-name>

      <param-value>malldb</param-value>

  </context-param>

  

  <context-param>

      <param-name>DBConnectionString</param-name>

      <param-value>oracle-xxxxxxxx</param-value>

  </context-param>


[InitParamTest.jsp]

<body>

DB NAME : ${initParam.DB_NAME}

DB Connection String : ${initParam.DBConnectionString}

</body>

pageContext 

 JSP 페이지의 환경 정보의 집합 

java.servlet.jsp.PageContext 객체를 이용하는데
이 클래스에 속하는 get으로 시작하는 이름의 메서드를 호출할 수 있다.

그러므로 PageContext 클래스의 API 규격서를 찾아서 확인 한다.


예) EL에서 사용할땐 get 이라는 단어를 땐다.

     ${pageContext.request} : JSP 페이지의 request 내장 변수의 값과 동일하기 때문에

     아래와 같이 request의 get메서드 값을 가져올때 사용될 수 있다.


     <%

request.getLocalName();

request.getRequestURI();

%>


     는 다음과 같이 사용할 수 있다.

    

    ${pageContext.request.localName}

    ${pageContext.request.requestURI}

    

 











'나는 엔지니어 > JSP' 카테고리의 다른 글

cleases 폴더 보기  (0) 2012.07.11
JSTL : import  (0) 2012.07.11
JSTL  (0) 2012.07.11
한글 깨질때..  (0) 2012.07.11
톰캣 context.xml 을 이용한 데이터베이스 연결  (0) 2012.07.10