-
JSP(expressionLanguage)JSP 2020. 6. 16. 17:28
저장영역(Scope)을 포함하는 기본 객체
1. pageContext
2. request
3. session
4. application
관련 메소드
1. 값 저장 - setAttribute(키, 값); : 값은 Object 타입으로 up casting
2. 값 취득 - getAttribute(키); : 값은 특정 타입으로 down casting 후 활용
3. 값 갱신 - setAttribute(기존의 동일키, 상이값);
pageContext.setAttribute("memberInfo", memberInfo); request.setAttribute("memberInfo",memberInfo); session.setAttribute("memberInfo",memberInfo); application.setAttribute("memberInfo", memberInfo);
EL 사용 예제
<h3>사칙연산</h3> <table> <tr> <td>표현 언어</td> <td>결과 값</td> </tr> <tr> <td>"<%= 3 + 2 %>"</td> <td>${ 3 + 2 }</td> </tr> <tr> <td>\${ 3 - 2 }</td> <td>${ 3 - 2 }</td> </tr> <tr> <td>\${ 3 * 2 }</td> <td>${ 3 * 2 }</td> </tr> <tr> <td>\${ 3 / 2 }</td> <td>${ 3 / 2 }</td> </tr> <tr> <td>\${ 3 div 2 }</td> <td>${ 3 div 2 }</td> </tr> <tr> <td>\${ 3 % 2 }</td> <td>${ 3 % 2 }</td> </tr> <tr> <td>\${ 3 mod 2 }</td> <td>${ 3 mod 2 }</td> </tr> <tr> <td>\${ 3 > 2 }</td> <td>${ 3 > 2 }</td> </tr> <tr> <td>\${ 3 gt 2 }</td> <td>${ 3 gt 2 }</td> </tr> <tr> <td>\${ 3 < 2 }</td> <td>${ 3 < 2 }</td> </tr> <tr> <td>\${ 3 lt 2 }</td> <td>${ 3 lt 2 }</td> </tr> <tr> <td>\${ 3 >= 2 }</td> <td>${ 3 >= 2 }</td> </tr> <tr> <td>\${ 3 ge 2 }</td> <td>${ 3 ge 2 }</td> </tr> <tr> <td>\${ 3 <= 2 }</td> <td>${ 3 <= 2 }</td> </tr> <tr> <td>\${ 3 le 2 }</td> <td>${ 3 le 2 }</td> </tr> <tr> <td>\${ 3 == 2 }</td> <td>${ 3 == 2 }</td> </tr> <tr> <td>\${ 3 != 2 }</td> <td>${ 3 != 2 }</td> </tr> </table>
div : 나누고 몫
mod : 나누고 나머지
gt : >
lt : <
ge : >=
le : <=
요청 헤더 정보 취득
<h3>요청 헤더 정보 취득</h3> <table> <tr> <td>표현언어</td> <td>결과값</td> </tr> <tr> <td><%=request.getHeader("Accept-Language") %></td> <td>\${header['Accept-Language']}</td> <td>${header['Accept-Language']}</td> </tr> <tr> <td>\${header.host }</td> <td>${header.host }</td> </tr> <tr> <td>\${header['host'] }</td> <td>${header['host'] }</td> </tr> </table>
값 출력 메커니즘
EL의 표현식은 객체에 접근할때 ‘ . ’ 또는 []를 이용한다.
예) ${mvo.name}과 ${mvo["name"]}은 동일하다.
실행방식
표현1.표현2
표현1을 값1로 변환
값1이 null이면 null을 return 한다. null인 경우 아무 것도 출력 안한다.
값1이 null이 아니면 표현2를 값2로 변환한다.
값2가 null이면 null을 리턴한다. null이 아니면 값2를 출력한다.
표현1에 오는 것 : EL내장 객체 또는 속성(scope에 binding 된 속성 값)
기본객체(9개) : EL 표기법 내에서 pageContext로부터 접근
EL내 메서드 선언 규칙
* EL내 접근 가능한 메서드 : getter (setter는 xxxx)
1. get 키워드가 삭제 + 선두어가 소문자로 변경됨 + 파렌스 삭제
request.getContextPath() : 아규먼트 x
request.getRemoteAdder() : 아규먼트 x
2. 메서드 원형 그대로 선언
apllication.getRealPath("") : 아규먼트 o
<table> <tr> <td>표기법</td> <td>결과값</td> </tr> <tr> <td><%=request.getContextPath() %></td> <td>${pageContext.request.contextPath }</td> </tr> <tr> <td><%=request.getRemoteAddr() %></td> <td>${pageContext.request.remoteAddr }</td> </tr> <tr> <td><%=application.getRealPath("") %></td> <td>${pageContext.servletContext.getRealPath("")}</td> * aplication만 servletContext로 접근함. </tr> </table>
web.xml 내 선언된 상수 접근
<h3>web.xml 내 선언된 상수 접근</h3> <table> <tr> <td>표기법</td><td>결과값</td> </tr> <tr> <td><%=application.getInitParameter("oracleDriver") %></td> <td>${initParam.oracleDriver }</td> * get, () 생략 </tr> <tr> <td>\${initParam.oracleURL }</td> <td>${initParam.oracleURL }</td> </tr> </table>
Expression과 EL(Expression Language) 차이
- Expression NullPointerException 외 기타 Exception 유발
- EL은 Exception을 유발하지 않음
Exception = ''
저장영역(Scope) 값 취득
pageContext<br> 아이디 : <%=((MemberVO)pageContext.getAttribute("memberInfo")).getMem_id() %> <br> 패스워드 : ${pageScope.memberInfo.mem_id }<br> 성명 : ${pageScope.memberInfo.mem_name }<br> ------------------------------------------------------------------------------------ request<br> 주민번호1 : ${requestScope.memberInfo.mem_regno1 }<br> 주민번호2 : ${requestScope.memberInfo.mem_regno2 }<br> 생년월일 : ${requestScope.memberInfo.mem_bir }<br> ------------------------------------------------------------------------------------ session<br> 집전화번호 : ${sessionScope.memberInfo.mem_hometel }<br> 회사전화번호 : ${sessionScope.memberInfo.mem_comtel }<br> 휴대폰번호 : ${sessionScope.memberInfo.mem_hp }<br> ------------------------------------------------------------------------------------ application<br> 메일주소 : ${aplicationScope.memberInfo.mem_mail }<br> 직업 : ${aplicationScope.memberInfo.mem_job }<br> 취미 : ${aplicationScope.memberInfo.mem_like }<br>
* Scope 생략 접근 우선 순위 : pageScope -> request - > session - > application
주소1 : ${memberInfo.mem_add1 }<br> 주소2 : ${memberInfo.mem_add2 }<br>
디클러레이션 또는 스크립트릿 내에서 EL 선언은 불가능
EL은 자바스크립트 또는 html 내에서 활용
request.getParameter(키값)을 EL로
<table> <tr> <td>표기법</td> <td>결과값</td> </tr> <tr> <td><%=request.getParameter("mem_id") %></td> <td>${param.mem_id }</td> </tr> <tr> <td>\${param.mem_pass }</td> <td>${param.mem_pass }</td> </tr> </table>
쿠키값 취득
<h3>쿠키값 취득</h3> <table> <tr> <td>표기법</td> <td>결과값</td> </tr> <tr> <td><%=request.getCookies() %></td> <td>${cookie.JSESSIONID.value }</td> <!-- mem_id라는 키값을 주고 값을 가져올 때에는 value 를 사용한다. --> </tr> </table> <h3>배열 인덱스 접근</h3> ${requestScope.hets[0] }<br/> ${hets[1] }<br/> ${hets[2] }<br/>
삼항연산자
Expression : <%=(pageContext.getAttribute("memberInfo")) != null ? "널이 아니다." : "널" %><br/> EL : ${ memberInfo != null ? '널 아님' : '널' } <table> <tr> <td>\${memberInfo != null }</td> <td>${!empty memberInfo }</td> </tr> <tr> <td>\${memberInfo != null }</td> <td>${ not empty memberInfo }</td> </tr> <tr> <td>\${memberInfo == null }</td> <td>${empty memberInfo }</td> </tr> <tr> <td>\${memberInfo == null ? '널' : '널 아님' }</td> <td>${ empty memberInfo ? '널' : '널 아님' }</td> </tr> </table>
'JSP' 카테고리의 다른 글
JSP(사용자 정보 암호화 / 복호화 처리) (0) 2020.06.18 JSP(사용자 정의 태그 만들기) (0) 2020.06.17 ajax(This XML file does not appear to have any style information associated with it. The document tree is shown below.) 에러 (0) 2020.06.15 JSP(Session, 세션) (0) 2020.06.11 JSP(Cookie) (0) 2020.06.11