Tiny Star

구/JSP

자바 EL(표현언어) ${}는 어떻게 쓰이지

흰둥아 2020. 10. 29. 10:34

jsp 프로젝트를 따라치던 중에

${} 이게 등장했다.

 

 

 

분명 session에 "uid"라는 이름으로 값을 저장했는데

 

 

 

session.getAttribute() 없이 uid를 사용하고 있었던 것..!

아무리 찾아봐도 getAttribute가 쓰인 곳이 없는데...

 

 

 

${ }

그러던 중 <자바 EL(Expression Language) 표현언어>라는 걸 검색해서 알게됐다.

 

 


 

 

${ }은 영역(Scope : request, sessiong, application)

객체값을 가져와 출력할 수 있다.

 

// Scope.jsp

request.setAttribute("id", "haeun");
session.setAttribute("passwd", "1234");
application.setAttribute("name", "shin");

response.sendRedirect("main.jsp");

보통 이렇게 선언하고 main에서 사용하려면

 

 

 

// main.jsp

<%
	String id = request.getAttribute("id");
	String passwd = session.getAttribute("passwd");
	String name = application.getAttribute("name")
%>

<p>아이디 : <%=id%>
<p>비밀번호 : <%=passwd%>
<p>이름 : <%=name%>

 이렇게 getAttribute로 가져와 변수에 넣어 사용해야 한다.

 

 

 

// main.jsp

<p>아이디 : ${id}	// haeun
<p>비밀번호 : ${passwd}	// 1234
<p>이름 : ${name}	 // shin

하지만 이렇게 자바 EL을 사용하면 setAttribute로 지정한 키만 넣으면

간단하게 Scope에 저장된 값들을 불러올 수 있다.

 

 

 

${name}
${sessiongScope.name}
${application.name}

만약 Scope영역이 다른데, 키가 같은 경우는

이렇게 ${scope.key} 로 넣어주면 된다.

 

 

 

위와 같은 상황에서 ${name}을 사용할 경우 getAttribute 메소드는

request -> session -> application 순서대로 실행 된다.

(우선순위 page > request > session > application)

 

request 객체에서 "name"이 등록되어있다면, request 실행.

만약 request에 등록되어있지 않다면 session 실행,

session에도 없다면 application이 실행된다.

 

 

 


 

 

from 태그에서도 값을 가져올 수도 있다.

 

<!-- form.html -->

<form action="main.jsp">
	<input type="text" name="id">
    <input tpye="password" name="passwd">
    <input type="submit" value="전송">
</form>
// main.jsp

<%
	String id = request.getParameter("id")
    String passwd = request.getParameter("passwd");
%>

<p>아이디 : <%=id%>
<p>비밀번호 : <%=passwd%>

원래라면 이렇게 request.getParameter()를 사용해 변수로 저장해 가져왔다면

 

 

 

// main.jsp

<p>아이디 : ${param.id}
<p>비밀번호 : ${param.passwd}

자바 EL을 이용하면 이렇게 ${param.name} 으로 가져올 수 있다.

 

 

 

 

<!-- form.html -->

<form action="main.jsp">
  <input type="checkbox" name="news" value="사회">사회
  <input type="checkbox" name="news" value="IT">IT
  <input type="checkbox" name="news" value="경제">경제
</form>

 만약 이렇게 form 태그 안에 checkbox 속성이 여러개라면

 

 

 

// main.jsp

뉴스 : ${paramValues.book[0]}, ${paramValues.book[1]}, ${paramValues.book[2]}

이 중 선택한 것만 출력된다.

 

IT와 경제를 선택했다면

뉴스 : IT, 경제,

이렇게 출력이 되게 된다.

 

 

 


 

 

이렇게 사용할 수 있는 것들을 표로 정리했다.

내장객체 사용 기능
pageScope ${pageScope.xxx} page 범위에 포함된 속성 값에 접근
requestScope ${requestScope.xxx} request 범위에 포함된 속성 값에 접근
sessionScope ${sessiongScope.xxx} session 범위에 포함된 속성 값에 접근
applicationScope ${applicationScope.xxx} application 범위에 포함된 속성 값에 접근
param ${param.xxx} request.getParameter("xxx")로 얻을 수 있는 값
paramValues ${paramValues.xxx} request.getParameterValues("xxx")와 동일한 기능
header ${header.xxx} request.getHeader("xxx")와 동일한 기능
headerValues ${headerValues.xxx} request.getHeaderValues("xxx")와 동일한 기능
initParam ${initParam.xxx} 컨텍스트의 초기화 매개변수 값
cookie ${cookie.key값.xxx} 쿠키 정보에 접근
pageContext ${pageContext.xxx.xxx} pageContext 객체

 

' > JSP' 카테고리의 다른 글

setProperty / getProperty 액션 태그  (0) 2020.10.06
JSP 태그  (0) 2020.10.05
top