JSTL (JSP Standard Tag Library)

Seoina·2020년 1월 10일
0

2020camp

목록 보기
5/12

장점:
Fast development : JSTL은 JSP를 단순화하는 많은 태그를 제공한다.
Code Reusability : 다양한 페이지에서 JSTL 태그를 사용할 수 있다.
scriptlet tag를 사용할 필요가 없다.

-JSTL TAG
1. Core tag : 변수 지원, URL 관리, flow control 등을 제공한다.
URL = "http://java.sun.com/jsp/jstl/core" prefix="c"

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

- c:out 
	<%= %> 태그 작동 방식과 유사한 표현식의 결과를 나타낸다. 변수의 출력
    ![스크린샷 2020-01-10 오전 10.28.52.png]	(https://images.velog.io/post-	images/sia2650/91d3a510-3348-11ea-aa7c-1b3d0b005d91/-2020-01-10-10.28.52.png)

    
- c:import
	상대 또는 절대 URL을 검색하여 내용을 'var'문자열, 'varReader의 Reader 또는 페이지에	표시한다. 페이지 첨부
	![image.png](https://velog.velcdn.com/post-images%2Fsia2650%2F221408c0-3350-11ea-%09%09bd31-b39f63171fbf%2Fimage.png)

    
- c:set 
	JSP에서 사용될 변수를 설정한다. 변수의 선언

스크린샷 2020-01-10 오전 11.25.55.png

- c:remove
	설정한 변수를 제거한다. 변수의 제거!
    [스크린샷 2020-01-10 오전 11.29.11.png](https://images.velog.io/post-	images/sia2650/ff389540-3350-11ea-99e9-99fed9897c3d/-2020-01-10-11.29.11.png)

    
- c:catch
	exception 처리에 사용된다. 예외 처리
	![스크린샷 2020-01-10 오전 11.29.48.png](https://velog.velcdn.com/post-images%2Fsia2650%2F151ad8f0-3351-11ea-bd31-b39f63171fbf%2F-2020-01-10-11.29.48.png)


- c:if
	조건에 따라 내부 코드를 수행한다. 조건문 (else는 없다)
	![스크린샷 2020-01-10 오전 11.32.42.png](https://velog.velcdn.com/post-images%2Fsia2650%2F7ccc6900-3351-11ea-98b2-4bc21ae4e08f%2F-2020-01-10-11.32.42.png)


- c:choose, c:when, c:otherwise
	다중 조건을 처리할 때 사용한다. Switch문과 비슷
	![스크린샷 2020-01-10 오전 11.36.33.png](https://velog.velcdn.com/post-images%2Fsia2650%2F061a1950-3352-11ea-99e9-99fed9897c3d%2F-2020-01-10-11.36.33.png)


- c:foreach
	컬렉션이나 Map의 각 항목을 처리할 때 사용된다. 반복문
	![스크린샷 2020-01-10 오전 11.38.32.png](https://velog.velcdn.com/post-images%2Fsia2650%2F4ce3e500-3352-11ea-b12c-a3fb2b90d50e%2F-2020-01-10-11.38.32.png)


- c:forTokens
	구분자로 분리된 각각의 토큰을 처리할 때 사용된다. 구분자로 분할하여 반복문 
	![스크린샷 2020-01-10 오전 11.40.53.png](https://velog.velcdn.com/post-images%2Fsia2650%2Fa1568c00-3352-11ea-bd31-b39f63171fbf%2F-2020-01-10-11.40.53.png)


- c:param
	파라미터 추가
	![스크린샷 2020-01-10 오전 11.43.23.png](https://velog.velcdn.com/post-images%2Fsia2650%2Ffaa84cd0-3352-11ea-bd31-b39f63171fbf%2F-2020-01-10-11.43.23.png)

    
- c:redirect
	지정한 경로로 리다이렉트 한다. URL 이동
	![스크린샷 2020-01-10 오전 11.43.57.png](https://velog.velcdn.com/post-images%2Fsia2650%2F0e2f3b60-3353-11ea-bd31-b39f63171fbf%2F-2020-01-10-11.43.57.png)


- c:url
	URL을 재작성한다. URL 생성
	![스크린샷 2020-01-10 오전 11.44.25.png](https://velog.velcdn.com/post-images%2Fsia2650%2F205cdb80-3353-11ea-b258-85917239b1ea%2F-2020-01-10-11.44.25.png)
  1. Function tag : 문자열 조작 및 문자열 길이를 지원한다.
    URL = "http://java.sun.com/jsp/jstl/functions" prefix="fn"

    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn

    • fn:contains()
      str1이 str2를 포함하고 있을 경우 true를 반환
      boolean contains(java.lang.String, java.lang.String)
      스크린샷 2020-01-10 오후 1.55.05.png
    • fn:containsIgnoreCase()
      대소문자 구분없이 str1이 str2를 포함하고 있을 경우 true를 반환
      boolean containsIgnoreCase(java.lang.String, java.lang.String)
      스크린샷 2020-01-10 오후 1.58.53.png
- fn:endsWith()	
	str1이 str2로 끝나는 경우 true, 그렇지 않을 경우 false를 반환
    boolean endsWith(java.lang.String, java.lang.String)  
	![스크린샷 2020-01-10 오후 2.02.00.png](https://velog.velcdn.com/post-images%2Fsia2650%2F56b1b8f0-3366-11ea-b8dc-77ece879a926%2F-2020-01-10-2.02.00.png)

    
- fn:startsWith()	
	str1이 str2로 시작하는 경우 true, 그렇지 않을 경우 false를 반환
    boolean fn:startsWith(String input, String prefix)  
	![스크린샷 2020-01-10 오후 2.14.57.png](https://velog.velcdn.com/post-images%2Fsia2650%2F25949010-3368-11ea-b8dc-77ece879a926%2F-2020-01-10-2.14.57.png)

    
- fn:escapeXml()
	 XML의 객체 참조에 해당하는 특수문자를 처리함
     java.lang.String escapeXml(java.lang.String)  
	![스크린샷 2020-01-10 오후 2.02.37.png](https://velog.velcdn.com/post-images%2Fsia2650%2F6d092ca0-3366-11ea-b8dc-77ece879a926%2F-2020-01-10-2.02.37.png)


- fn:indexOf()
	str1에서 str2가 위치한 index를 구함
    int indexOf(java.lang.String, java.lang.String)  
	![스크린샷 2020-01-10 오후 2.10.10.png](https://velog.velcdn.com/post-images%2Fsia2650%2F7c698680-3367-11ea-b8dc-77ece879a926%2F-2020-01-10-2.10.10.png)

	
- fn:trim()
	str 좌우의 공백 문자 제거
    java.lang.String trim(java.lang.String)  
	![스크린샷 2020-01-10 오후 2.12.11.png](https://velog.velcdn.com/post-images%2Fsia2650%2Fc35fb960-3367-11ea-b8dc-77ece879a926%2F-2020-01-10-2.12.11.png)

    
- fn:split()
	str2로 명시한 글자를 기준으로 str1을 분리해서 배열로 반환 
    java.lang.String[] split(java.lang.String, java.lang.String)  
	![스크린샷 2020-01-10 오후 2.15.31.png](https://velog.velcdn.com/post-images%2Fsia2650%2F3a7edf30-3368-11ea-9233-c7f1a636309c%2F-2020-01-10-2.15.31.png)


- fn:toLowerCase()
	str을 대문자로 변환
    String fn:toLowerCase(String  input)  
	![스크린샷 2020-01-10 오후 2.16.29.png](https://velog.velcdn.com/post-images%2Fsia2650%2F5c951170-3368-11ea-8c5f-3bbfb64ae6e6%2F-2020-01-10-2.16.29.png)

	
- fn:toUpperCase()
	str을 소문자로 변환
    String fn:toUpperCase(String input) 
	![스크린샷 2020-01-10 오후 2.17.51.png](https://velog.velcdn.com/post-images%2Fsia2650%2F8d9ca490-3368-11ea-9233-c7f1a636309c%2F-2020-01-10-2.17.51.png)


- fn:substring()
	str.substring(idx1, idx2)의 결과를 반환, idx2가 -1일 경우 str.substring(idx1)과 동일
    String fn:substring(String inputstring, int start, int end)  
	![스크린샷 2020-01-10 오후 2.19.50.png](https://velog.velcdn.com/post-images%2Fsia2650%2Fd4d7a8a0-3368-11ea-b568-8903644a2c9c%2F-2020-01-10-2.19.50.png)

    
- fn:substringAfter()
	str1에서 str1에 포함되어 있는 str2 이후의 문자열을 구함
    String fn:substringAfter(String input, String afterstring)  
	![스크린샷 2020-01-10 오후 2.21.29.png](https://velog.velcdn.com/post-images%2Fsia2650%2F0f7acc30-3369-11ea-b568-8903644a2c9c%2F-2020-01-10-2.21.29.png)


- fn:substringBefore()
	str1에서 str1에 포함되어 있는 str2 이전의 문자열을 구함
    String fn:substringBefore(String input, String beforestring)  
	![스크린샷 2020-01-10 오후 2.22.34.png](https://velog.velcdn.com/post-images%2Fsia2650%2F3635ce60-3369-11ea-b8dc-77ece879a926%2F-2020-01-10-2.22.34.png)

	
- fn:length()
	obj가 Conllection인 경우 저장된 항목의 개수를, 문자인 경우 문자열의 길이를 반환
    int length(java.lang.Object)  
	![스크린샷 2020-01-10 오후 2.23.49.png](https://velog.velcdn.com/post-images%2Fsia2650%2F62f2e690-3369-11ea-9233-c7f1a636309c%2F-2020-01-10-2.23.49.png)


- fn:replace()
	str에 있는 src를 dest로 변환
    String fn:replace(String input, String search_for, String replace_with)
    
   
  1. Formatting tag : 메시지 형식화, 번호 및 날짜 형식화 등을 지원한다.
    URL = "http://java.sun.com/jsp/jstl/fmt" prefix="fmt"

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

    • fmt:parseNumber
      문자열로 표시된 날짜를 분석해서 숫자로 변환
      <fmt:parseNumber attributes> body content </fmt:parseNumber>
      스크린샷 2020-01-10 오후 2.36.28.png
    • fmt:timeZone
      시간대를 지정
      <fmt:timeZone attributes> body content </fmt:timeZone>
    • fmt:formatNumber
      숫자를 포맷팅
      <fmt:formatNumber attributes> body content </fmt:formatNumber>
    • fmt:parseDate
      문자열로 표시된 날짜를 분석해서 Date 객체로 변환
      <fmt:parseDate attributes/>
      스크린샷 2020-01-10 오후 2.46.08.png
    • fmt:bundle
      사용할 번들을 지정
      <fmt:bundle basename="Resource Bundle Name" prefix="msg"> body content </fmt:bundle>
      스크린샷 2020-01-10 오후 2.48.41.png
    • fmt:setTimezone
      시간대 정보를 특정 변수에 저장
      <fmt:setTimeZone value="value" var="var name" scope="scope"/>
      스크린샷 2020-01-10 오후 2.51.02.png
    • fmt:setBundle
      리소스 번들을 읽어와 특정 변수에 저장
      <fmt:setBundle basename="ResourceBundle Name" var="value"/>
      스크린샷 2020-01-10 오후 2.56.14.png
    • fmt:message
      지역에 알맞은 메시지를 출력
      <fmt:message attributes> body content </fmt:message>
      스크린샷 2020-01-10 오후 2.57.59.png
    • fmt:formatDate
      Date 객체를 포맷팅
      <fmt:formatDate attributes/>
  2. XML tag : flow control, transformation 등을 제공한다.
    URL = "http://java.sun.com/jsp/jstl/xml" prefix="x"

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

    • x:out
      Xpath에 지정한 패턴에 따라 xml 내용을 출력한다.
      <x:out attributes/>

    • x:parse
      xml 문서를 읽어서 파싱한다.
      <x:parse attributes> body content </x:parse>
      스크린샷 2020-01-10 오후 3.19.51.png

    • x:set
      set : XPath에 따라 선택된 내용을 변수에 저장한다.
      <x:set attributes/>

    • x:choose
      <c:choose/> 태그와 같은 기능이다.
      <x:choose> body content </x:choose>

    • x:when
      <x:when>은 조건이 true일 때 수행한다. <c:when>와 같다.
      <x:when attribute> body content </x:when>

    • x:otherwise
      <x:otherwise>은 조건이 false일 때 수행한다. <c:otherwise> 와 같다.
      <x:otherwise> body content </x:otherwise>

    • x:if
      조건문에 사용
      <x:if attributes> body content </x:if>

    • x:transform
      xml과 xslt 파일을 결합해서 새로운 형식의 문서를 생성한다.
      <x:transform attributes> body content </x:transform>

    • x:param
      <x:param/> 태그는 파라미터 사용 시에 사용된다.
      <x:param name="name" value="value"></x:param>

  3. SQL tag : JSTL SQL 태그는 SQL 지원을 제공한다.
    URL = "http://java.sun.com/jsp/jstl/sql" prefix="sql"

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

    • sql:setDataSource
      DB에 접속하기 위한 데이터 소스를 생성한다.
    • sql:query
      SQL query 문장을 실행한다. executeQuery()와 비슷하다.
      <sql:query dataSource="${db}" var="rs">
      SELECT * from Students;
      </sql:query>
    • sql:update
      SQL query 문장을 업데이트(삽입, 수정, 삭제) 한다. executeUpdate()와 같은 기능을 한다.
      <sql:update dataSource="${db}" var="count">
      INSERT INTO Students VALUES (154,'Nasreen', 'jaha', 25);
      </sql:update>
- sql:param
	SQL tag에 파라미터를 삽입할 수 있는 태그. 문자열을 파라미터로 사용할 수 있다.

<c:set var="StudentId" value="152"/>  
<sql:update dataSource="${db}" var="count">  
DELETE FROM Students WHERE Id = ?  
<sql:param value="${StudentId}" />  
</sql:update>  


    
- sql:dateParam
	SQL tag에 파라미터를 삽입할 수 있는 태그. 날짜를 파라미터로 사용할 수 있다.
    
 <%  
Date DoB = new Date("2000/10/16");  
int studentId = 151;  
%>  
<sql:update dataSource="${db}" var="count">  

UPDATE Student SET dob = ? WHERE Id = ?
<sql:dateParam value="<%=DoB%>" type="DATE" />
<sql:param value="<%=studentId%>" />
</sql:update>

![스크린샷 2020-01-10 오후 3.46.32.png](https://velog.velcdn.com/post-images%2Fsia2650%2Ff1489470-3374-11ea-b343-2ba5da56c081%2F-2020-01-10-3.46.32.png)



- sql:transaction
	transaction을 구현할 때 사용한다.
    
![스크린샷 2020-01-10 오후 3.47.06.png](https://velog.velcdn.com/post-images%2Fsia2650%2F05df4550-3375-11ea-b343-2ba5da56c081%2F-2020-01-10-3.47.06.png)

0개의 댓글