[JSP] EL과 JSTL

JOY·2023년 4월 19일
0

[Java]

목록 보기
14/15
post-thumbnail

EL 표현언어

JSP 2.0 새롭게 추가된 스크립트 요소

기본 문법

  • $ 로 시작한다
  • 모든 내용은 {표현식} 으로 구성된다.
    * 표현식에는 변수명, 속성명, 메소드 구조로 이루어진다.
    • 정수형, 실수형, 문자열, 논리형, null이 올 수 있고 연산이 가능하다.
  • 표현언어 내장 객체
    - pageScope 👉 page 기본객체에 저장된 속성
    - reqeustScope 👉 reqeust 기본객체에 저장된 속성
    - sessionScope 👉 session 기본객체에 저장된 속성
    - applicationScope 👉 application 기본객체에 저장된 속성
  • 표현언어 연산자 ( 산술, 관계, 조건, 논리)

🤓코드

<h3> EL = 표현언어 </h3>
<!-- EL 표현식 앞에 \ 붙이면 문자열로 인식, EL 자체가 출력  -->
\${5} = ${5} <br>
\${5*2} = ${5*2} <br>
\${5 gt 2} = ${5 gt 2} <br>
\${5 == 5 || 3 < 5} = ${5 == 5 || 3 < 5} <br>
\${5 eq 5 || 3 lt 5} = ${5 eq 5 || 3 lt 5} <br>
\${5 == 5 && 3 > 5} = ${5 == 5 && 3 > 5} <br>
\${5 > 3 ? "크다" : "작다"} = ${5 > 3 ? "크다" : "작다"} <br>

🤓실행결과

  • Scope 영역 ( setAttribute() / getAttribute() )

    page < request < session < application

<%
	//요청 되는 순간에만 유지
	request.setAttribute("id", "ayoung0302");	

	//같은 브라우저에서 계속 사용 가능
	session.setAttribute("addr", "서울시 강남구 선릉역");
	session.setAttribute("msg", "session 영역에 저장된 메세지");
	
	//한번 저장되면 새로운 창에서 접속해도 사용 가능
	application.setAttribute("msg", "application 영역에 저장된 메세지");
	application.setAttribute("hobbys", new String[]{"등산","골프","수영","낚시"});
%>
<h3>Scope영역 (pageContext &lt; request &lt; session &lt; application) 정보 가져오기</h3>
<hr>
아이디 : <%=request.getAttribute("id") %> / ${requestScope.id} / ${id}<br>
<hr>
주소 : <%=session.getAttribute("addr") %> / ${sessionScope.addr} / ${addr}<br> 
<hr>
메시지(session) : <%=session.getAttribute("msg") %> / ${sessionScope.msg} / ${msg}<br>
<hr>
메시지(application) : <%=application.getAttribute("msg") %> / ${applicationScope.msg} / ${msg }<br>
<hr>
취미 : <%=application.getAttribute("hobbys") %> / ${applicationScope.hobbys } / ${hobbys}<br>

<hr>
<%
	String name="조이";
	
	request.setAttribute("name", name);
%>
이름 : <%=name %> / ${name}
  • 내장 객체에 해당 하는 값 출력 하기 : ${requestScope.id}
  • param 👉 요청 prameter의 name에 해당하는 값을 가져온다.
    ex) ${param.name} = request.getParameter("name");

JSTL

JSP에서 표준으로 자주사용하는 부분을 미리 태그로 만들어 놓은 것

  • 종류
    • 코어(core), XML, I18N(국제화), 데이터베이스(sql), 함수(function)
  • 태그 라이브러리 선언
    • JSP 지시자 태그를 사용해서 선언한다
    • uri : 태그 라이브러리의 네임 스페이스 식별자
    • prefix : JSTL 태그 사용시 태그 이름앞에 붙일 접두사
<%@ tablib uri="URl" prefix="접두사"%>
  • JSP 문서에서 JSTL을 사용하기 위한 선언방법
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>	//가장 많이 사용
<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>   

사용 방법

c:out

출력문

<c:out value="값 | 변수명" escapeXml="true|false" />
  • 사용 예시
<c:out value="안녕"/><br>
<c:out value="<h3>안녕</h3>"/><br>

escapeXml="true" 는 값에 태그 있으면 문자로 출력

c:set

변수

<c:set var="변수명" value="값" scope="page(default)|request|session|application" />
<c:set var="id" value="joy"/>
<c:set var="age" value="20"	scope="session"/>
<c:set var="addr" value="서울" scope="application"/>

value의 값은 무조건 String

만약 value="20"이면숫자20,value="{20}" 이면 숫자 20, value="{'20'}" 이면 문자 20, value="20" 이면 문자 20

c:remove

저장된 값 제거

<c:remove var="이름" />```

c:catch

예외발생

<c:catch var="이름">
  예외발생 가능성 코드
</c:catch>```

c:if

조건문

<c:if test="조건식" var="결과저장할이름" >
        결과가 true일때 실행문장.
</c:if>  ```

조건식이 true면 실행문장이 실행

<c:choose>

Java의 Switch-case문과 같은 기능

<c:when test="조건식"> 실행문장 </c:when>
      <c:when test="조건식"> 실행문장 </c:when>
      <c:when test="조건식"> 실행문장 </c:when>
      ....
      <c:otherwise> 위조건이외의 경우 실행문장 </c:otherwise>
</c:choose>```

c:forEach

반복문 or 배열

<c:forEach var="이름" begin="시작" end="끝" step="단계"
     items="항목" varStatus="현재상태에대한값" >     
     ${상태나타내는변수.index}
     ${상태나타내는변수.count}
     ${이름}  
   </c:forEach>
profile
Just Do IT ------- 🏃‍♀️

0개의 댓글