-
[JSP/Servlet] JSTL - 코어 라이브러리IT/Spring-JSP&Servlet 2020. 11. 13. 01:20
■ 들어가기
- 뇌를 자극하는 JSP&Servlet (김윤명/한빛미디어). 을 공부하며 정리하는 블로그
■ 목차
1. <c:set>
2. <c:remove>
3. <c:if>
4. <c:choose>
5. <c:forEach>
6. <c:forTokens>
7. <c:catch>
8. <c:redirect>
9. <c:import>10. <c:url> 커스텀 액션
11. <c:out> 커스텀 액션
1. <c:set> 커스텀 액션
- 변수 선언 후 해당 변수에 초기값을 대입하는 기능의 커스텀 액션
- 자바에서의 변수 선언
ex. int num = 100 ;
- <c:set> 커스텀 액션을 이용한 변수 선언 >> var, value 2개의 애트리뷰트 사용
ex. <c:set var="num" value="100" />
( 자바에서와 다르게 변수타입(ex. int)을 사용하지 않음 )
[주의] 커스텀 액션 변수 사용 범위
- 익스프레션 언어의 EL 식 안에서 사용(ex. ${num}) : O
- 스크립팅 요소 안에서 사용(ex. <%= num %> : X
=> <c:set> 커스텀 액션을 사용해 선언한 변수는 page 데이터 영역의 애트리뷰트이며, 자바 변수가 아니기 때문!- page 데이터 영역 : setAttribute, getAttribute 메서드를 이용해서 데이터를 저장할 수 있는 4개 데이터 영역 (page, request, session, application) 중 가장 작은 범위의 영역
- 만일 page 데이터 영역이 아니라 request, session, application 데이터 영역에 애트리뷰트를 저장하고자 한다면,
<c:set> 태그에 scope 이라는 애트리뷰트를 추가후 변수가 저장될 데이터 영역을 지정!
ex. <c:set var="PRICE" value="15000" scope="request" />
2. <c:remove> 커스텀 액션
- 선언한 변수를 삭제하는 기능의 커스텀 액션
- <c:set> 커스텀 액션을 사용해서 선언한 변수는 page, request, session, application 데이터 영역에 애트리뷰트로 저장되기 때문에 인위적으로 <c:remove> 커스텀 액션을 통해 삭제 필요함!
- 사용방법
ex. <c:remove var="변수이름" />
단, 위와 같이 사용할 경우 page, request, session, application 데이터 영역에 저장되어 있는 num 이란 이름의 모든 애트리뷰트가 삭제되므로 특정 데이터영역 한정할 경우엔 scope 애트리뷰트로 데이터 영역 지정
ex. <c:remove var="num" scope="request" />
3. <c:if> 커스텀 액션
- 자바 프로그램의 if 문과 비슷한 역할을 하는 커스텀 액션
- 즉, 주어진 조건에 따라 어떤 동작을 수행하도록 만드는 액션
- 자바에서의 if 문 사용
if (조건식) {
명령문
}
- <c:if> 커스텀 액션 사용 >> test 애트리뷰트 값으로 지정
<c:if test="${num1 > num2}">
명령문
</c:if>
4. <c:choose> 커스텀 액션
- 자바 프로그램의 switch 문과 비슷한 역할을 하는 커스텀 액션
- <c:when>, <c:otherwise> 커스텀 액션과 함께 사용되며, 각각 switch 문의 case, default 절과 비슷함
자바에서 사용 예시 <c:choose> 커스텀 액션 사용 예시 switch (num) {
case 0 :
명령문
break ;
case 1 :
명령문
break ;
default :
명령문
break ;
}
<c:choose>
<c:when test="${num == 0}">
처음 뵙겠습니다. <br>
</c:when>
<c:when test="${num == 1}">
반갑습니다. <br>
</c:when>
<c:otherwise>
안녕하세요. <br>
</c:otherwise>
</c:choose>5. <c:forEach> 커스텀 액션
- 자바 프로그램의 for 문과 비슷한 역할을 하는 커스텀 액션
자바에서 사용 예시 <c:forEach> 커스텀 액션 사용 예시 for (int cnt = 0 ; cnt < 10 ; cnt++) {
System.out.println("야호") ;
}<c:forEach begin="1" end="10">
야호 <br>
</c:forEach><c:forEach> 커스텀 액션에서 변수 사용할 경우 <c:forEach var="cnt" begin="1" end="10">
${cnt} <br>
</c:forEach><c:forEach> 커스텀 액션에서 증가치 조정할 경우 <c:forEach var="cnt" begin="1" end="10" step="2">
${cnt} <br>
</c:forEach>- 배열과 같이 여러 개의 항목으로 구성된 데이터를 순서대로 출력 가능
items 애트리뷰트를 쓰고 그곳에 배열 이름을 지정
var 애트리뷰트에는 배열의 각 항목을 저장한다.
ex. <c:forEach var="변수명" items="${배열이름}">
${변수명} <br>
</c:forEach>
6. <c:forTokens> 커스텀 액션
- 자바의 for 문과 java.util.StringTokenizer 클래스의 기능을 합친 것과 같은 기능
- 즉, 문자열에 포함된 토큰을 분리해서 각각의 토큰에 대해 반복 처리를 수행하도록 만드는 기능
- items, delims, var 3개의 애트리뷰트 사용!
- items : 토큰을 포함하는 문자열을 지정
delims : 토큰을 분리하는데 사용할 구획 문자를 기술
var : 분리된 토큰을 대입할 변수명 기재
- 예시
<c:forTokens var="pet" items="햄스터 이구아나 소라게" delims=" ">
${pet} <br>
</c:forTokens>
7. <c:catch> 커스텀 액션
- 자바 프로그램의 try 문과 비슷한 역할을 하는 커스텀 액션
- 보통 <c:if> 커스텀 액션과 함께 자바의 try~catch 문 구현 시 사용
( <c:catch> 커스텀 액션은 try 문에 해당하는 기능을 하고, <c:if> 커스텀 액션을 통해 catch 문에 해당하는 기능 수행 )
- 시작/종료 태그 사이에서 에러가 발생하면 에러에 대한 정보를 익셉션 객체 저장 변수에 담아 다음 코드를 수행
- 사용법 :
<c:catch var="e">
코드
</c:catch>
<c:if test="${e != null}" >
코드
</c:if>
8. <c:redirect> 커스텀 액션
- 다른 JSP 페이지 호출하는 커스텀 액션
- <jsp:foward> 표준 액션은 RequestDispatcher 인터페이스의 forward 메서드와 동일한 방법으로 다른 JSP 페이지를 호출
- <c:redirect> 커스텀 액션은 sendRedirect 메서드와 동일한 방법으로 JSP 페이지가 아닌 웹 자원과 다른 웹 서버에 있는 웹 자원 호출!
- 파라미터 전달이 필요한 경우 <c:param> 커스텀 액션을 사용!
=> <c:param> 커스텀 액션을 사용하면 호출할 JSP에 파라미터를 같이 넘긴다!
=> <jsp:forward> 표준액션의 경우, URL이 변경되지 않는 반면
<c:redirect> 커스텀 액션은 호출된 JSP페이지 URL로 변경됨!
- 사용법 :
<c: redirect url="http://www.foo.com/bar.jsp" >
<c:param name="code" value="12345" />
<c:param name="num" value="1" />
</c:redirect>
=> 위 코드는 http://www.foo.com/bar.jsp?code=12345&num=1 URL을 생성 후 sendRedirect 메서드를 통해 웹 자원 호출하는 것과 동일함
9. <c:import> 커스텀 액션
- 현재의 JSP 페이지에 다른 JSP 페이지의 결과를 포함시키는 커스텀 액션
- <jsp:include> 표준 액션과 다른 점은 다른 웹 서버에 있는 JSP 페이지 호출 가능, JSP 페이지가 아닌 다른 종류의 웹 자원 호출 가능
- 호출하는 웹 자원에 데이터 전달 필요한 경우 <c:pram> 커스텀 액션 사용!
- 사용법 :
<c:import url="http://www.foo.com/bar.jsp" >
<c:param name="product" value="TV" />
<c:param name="index" value="07" />
</c:import>
10. <c:url> 커스텀 액션
- <c:set> 커스텀 액션과 마찬가지로 변수의 선언에 사용되는 액션이지만, URL을 저장하기 위한 변수 선언에 사용됨!
- var 애트리뷰트에 변수 이름지정, value 애트리뷰트에 초기값(URL) 지정
- 쿼리 스트링 형태로 데이터 전달할 경우, <c:param> 커스텀 액션 사용
- 사용법 :
<c:url var="myUrl" value="http://localhost:8090/brain09/Add.jsp" >
<c:param name="NUM1" value="999" />
<c:param name="NUM2" value="1" />
</c:url>
11. <c:out> 커스텀 액션
- 보통 특수 문자로 해석될 수 있는 <, >, &, ', " 와 같은 특수 문자를 포함한 데이터 출력이 필요한 경우 사용
( <c:out> 커스텀 액션은 위 특수 문자를 이스케이프 시퀀스로 바꿔주는 기능이 있기 때문 )
- value 애트리뷰트에 특수 문자가 포함된 출력할 데이터를 지정
- 사용법 :
<c:out value="<INPUT>은 <FORM>의 서브 앨리먼트입니다." />
- 특수문자와 이스케이프 시퀀스
특수문자 이스케이프 시퀀스 < < > > & & ' ' " " - 만일 출력할 데이터를 실제 태그 기능을 하도록 하기 위한다면 escapeXml 애트리뷰트에 false값을 지정! (기본값: true)
ex. <c:out value="<H1>오늘의 과제</H1>" escapeXml="false" />
- 또한, 출력할 데이터의 디폴트 값을 지정 가능 (EL 식의 결과 출력 시 유용)
'IT > Spring-JSP&Servlet' 카테고리의 다른 글
[JSP/Servlet] 커스텀 액션 만들기1 - 커스텀 액션을 만드는 방법 (0) 2020.11.23 [JSP/Servlet] 포매팅 라이브러리 (0) 2020.11.21 [JSP/Servlet] JSTL (0) 2020.11.13 [JSP/Servlet] 표준 액션(2/2) - <jsp:useBean>, <jsp:getProperty>, <jsp:setProperty> (0) 2020.11.06 [JSP/Servlet] 표준 액션(1/2) - <jsp:include>, <jsp:forward> (0) 2020.11.04