DeseoDeSeo
[ EL과 JSTL ] EL ( Expression Language ) 본문
- 새로운 dynamic web project "EL_JSTL" 생성
- webapp에 elTest.jsp 생성
- EL ( Expression Language ) : 값(데이터)을 웹 페이지에 표시(표현)하는 데 사용되는 태그 ( JSP출력에 대한 부분을 쉽게 하기 위해서)
JSTL (Jsp standard Tag Library) - JSP 표준 태그 라이브러리
< EL과 JSTL을 사용하는 이유 >
: JSP파일에 자바형식의 코드를 태그화 하여 사용할 수 있다.
EL, JSTL
장점: java값을 가져오기 간단하고, 가독성을 높여준다. ( 비 개발자를 위한 언어)
단점: 디테일한 설정을 하기에는 어려운점이 많다.
< 이전의 방법 >
session에 저장된 id라는 이름의 값을 웹페이지에 표현 하시오.
<%
String id = (String)session.getAttribute("id");
%>
<%= id %>
+ Bonus
내장 객체의 영역(Scope) : 객체의 유효기간
- 해당 객체를 누구와 공유할 것인가를 나타냄.
1. page 영역
: 한 번의 클라이언트 요청에 하나의 jsp페이지가 호출
: 하나의 jsp페이지를 처리할 때 사용되는 영역
2. request 영역
: 하나의 요청을 처리할 때 사용되는 영역
3. session 영역
: 하나의 브라우저와 관련된 영역
4. application영역
: 하나의 웹 애플리케이션과 관련된 영역
EL은 java의 저장된 아무 변수의 값을 사용불가, Scope에 저장된 값만 꺼내서 사용 가능.
${id}님 환영합니다!
<%
pageContext.setAttribute("num",10);
pageContext.setAttribute("isCheck",true);
%>
${num} <br>
${num + 10}<br>
${num -5}<br>
${num *30}<br>
${num *30}<br>
${num /2} ${num div 2}<br> <!-- div로도 사용 가능 -->
${num %2} ${num mod 2}<br> <!-- mod로도 사용 가능 -->
${num >5 && num >3}<br>
${num >5 and num <3}<br>
${num >5 || num <3}<br>
${num >5 or num <3}<br>
${isCheck} <br>
${!isCheck} ${not isCheck} <br>
< 출력 결과 >
${num >3} ${num gt 3}<br> <!-- greater?! -->
${num <20} ${num lt 3}<br> <!-- little?! -->
${num >= 3} ${num ge 3}<br> <!-- greater or equal ?! -->
${num <= 3} ${num le 3}<br> <!-- little or equal ?! -->
${num == 10} ${num eq 10} <br> <!-- equal -->
${num != 20} ${num ne 20} <br> <!-- not equal -->
EL에서 DTO,VO를 가져오면 어떻게 가져올까?
<%
MemberDTO dto = new MemberDTO("yamyam","1234","짜장면","그린");
pageContext.setAttribute("dto", dto);
%>
page 영역에 저장된 dto의 아이디 값을 표현식을 사용하여 웹페이지에 표현하시오.
<% MemberDTO info = (MemberDTO)pageContext.getAttribute("dto");%>
<%=info.getId() %>
EL사용하여 dto안에 있는 private 필드값을 가져오기 위해서는 반드시 getter메서드가 필요하다.
${dto.id}
${dto.pw}
${dto.nick}
${dto.addr} <br>
만약 el로 없는 값을 가져오면 아무것도 출력되지 않는다.
${empty good} <!-- empty를 통해서 비어있는지 확인할 수 있다. -->
${not empty good}<br> <!-- empty를 통해서 비어있는지 확인할 수 있다. -->
만약 동일한 이름의 값이 여러 영역에 들어가있다면
EL에서는 가장 작은 영역인 pageContext에서부터 값을 찾음.
pageContext, request, session, application 순서임.
특정영역에서만 찾고자 할때, name앞에 특정영역 scope를 붙여준다.
< 각 영역에 저장하기>
<%
pageContext.setAttribute("name","박병관");
request.setAttribute("name", "김미희");
session.setAttribute("name", "황해도");
application.setAttribute("name","조준용");
%>
- 속성 - jsp 내장 객체
- page 속성 - pageContext
- request 속성 - request
- session 속성 - session
- application 속성 - application
${name}
${sessionScope.name}
'JSP' 카테고리의 다른 글
[ El과 JSTL ] JSTL 마지막 실습 (0) | 2023.09.04 |
---|---|
[ EL과 JSTL ] EL : 체크박스 출력하기, JSTL (0) | 2023.09.02 |
HashMapTest.java (0) | 2023.08.31 |
[Message System 실습] 하나의 servlet파일을 각각의 class파일로 분할 & 인터페이스 생성 (0) | 2023.08.31 |
[Message System 실습 ] servlet파일들을 하나의 servlet파일로 구성 (0) | 2023.08.30 |