[Servlet_JSP] 14. EL, JSTL

boing·2023년 8월 21일
0

Servlet_JSP

목록 보기
6/6

🏷️ EL ( Expression Language )

  • ${ 표현식 }
    => 사용가능한 표현식: 실제값 또는 scope에 저장된 key값
  • 서블릿에서 setAttribute(key,value) 메서드로 저장된 데이터 값을 브라우저에 출력하는 용도
  • 연산 가능 (산술, 비교, 논리연산)

1. 서블릿에서 scope에 저장된 데이터를 웹브라우저에서 매우 편리하게 출력할 수 있음 **

${scope에 저장된 키값} : 화면단에서 자바코드가 없어지므로 매우 편리함

//servlet
request.setAttribute("userid", "홍길동");

//jsp tag
<% String userid = (String)request.getAttribute("userid"); %> 
<%= userid %>

//EL tag
${userid}

2. null값을 비어있는 값으로 처리함

=> NullPointException 발생하지 않는 장점

//scope에 저장하지 않은 경우
jsp tag: null
EL tag: (빈칸)

3. null여부 확인하는 방법 : ${empty 값or변수}

4. 다른 scope에 동일한 키값으로 저장 시

//jsp tag
<% 
String userid1 = (String)request.getAttribute("userid");
String userid2 = (String)session.getAttribute("userid");
String userid3 = (String)application.getAttribute("userid");
%>

<%= userid1 %>
<%= userid2 %>
<%= userid3 %>


//EL tag - 기본값: request scope
//다른 스코프에서 가져오려면 명시해주기
${key}
${requestScope.key}
${sessionScope.key}
${applicationScope.key}

5. dto를 EL로 출력하기

${key.변수명}

//jsp tag
<% LoginDTO dto = (LoginDTO)request.getAttribute("login"); %>
<%= dto.getPasswd() %>

//EL tag
${login.passwd}

6. list를 EL로 출력하기

${key[idx].변수명}

//jsp tag
<% List<LoginDTO> list = (List<LoginDTO>)request.getAttribute("list"); %> 
<%= list.get(0).getUserid() %><%= list.get(0).getPasswd() %>

//EL tag
${list[0].userid} ${list[0].passwd}

7. EL tag는 조건 및 반복처리 못함 => JSTL로 해결




🏷️ JSTL ( Jsp Standard Tag Library)

  • 사용자 태그 (custom tag)
  • 자바의 웹 개발자가 실제로 jsp에서 필요한 태그를 만들어서 제공함
  • Apache에서 무료로 제공
  • JSTL은 EL 과 함께 사용됨

💡 사용방법

가. jar파일 다운로드, 압축해제

나. 2개의 jar파일 WEB_INF/lib에 빌드패스

  • C:\servlet_study\jakarta-taglibs-standard-1.1.2\lib
    - jstl.jar
    - standard.jar

다. standard-examples.war 파일을 이클립스에서 import

  • Import > WAR file

라. import한 프로젝트에서 index.html 실행

💡 Core 라이브러리

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

1. General Purpose Tags

//out : 브라우저에 값 출력
<c:out value="${scope에 저장된 key값}" />

//set : 변수사용 ***
<c:set var="변수명" value="${scope에 저장된 key값}" scope="request|session|application" />
${변수명} //출력

2. Conditional Tags

//조건문
//1) 단일 if문
<c:if test="${조건식'}">
 문장
</c>
<c:if test="${조건식2'}">
 문장2
</c>

//2) choose문 
<c:choose>
  <c:when test="${userid == '홍길동'}">
  	홍길동입니다.
  </c:when>
  <c:otherwise>
	유관순입니다.
  </c:otherwise>	
</c:choose>

3. Iterator Tags

//반복문
//1) range
<c:forEach var="변수명" begin="시작값" end="마지막값" step="값설정가능">
  ${변수명} 문장
</c:forEach>

//2) simple - scope에 list저장한 형태 ***
<c:forEach var="dto" items="${list}">
  ${dto}<br>
  ${dto.userid}&nbsp;${dto.passwd}<br>
</c:forEach>

//3) Iteration Status - 반복되는 횟수 값을 얻어오기
<c:forEach var="" items="${}" varStatus="status">
${status.index}

index
count
current.lastName
current.firstName
first
last
begin
end
step
//상대경로
<a href=" <c:url value='경로'/> "/>
//절대경로 - /만 쓰면 context명 알아서 추가됨, 편리! ***
<a href=" <c:url value='/경로'/> "/> 
profile
keep coding

0개의 댓글