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 |