ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSP JSTL
    프로그래밍/JSP 2022. 12. 13. 10:58
    728x90

     

     

    JSTL은 JSTL(Java Server Page Standard Tag Library)의 약자로 JSP 개발에 매번 스크립틀릿 태그 <% ... %> 를 넣어 사용하는 것이 가독성을 떨어뜨리고 사용에 불편함이 존재하여 이를 해결하기 위해 등장한 태그 라이브러리이다.

     

    JSTL 사용을 통해 개발 속도와 가독성 향상, 코드의 재사용성 등 효율적인 개발에 도움을 받을 수 있다.

     

     

     

     

     

    라이브러리 추가

    JSTL를 사용하기 위해서는 라이브러리를 추가해줘야한다.

     

    https://tomcat.apache.org/download-taglibs.cgi

     

    Apache Tomcat® - Apache Taglibs Downloads

    Welcome to the Apache Taglibs download page. This page provides download links for obtaining the latest version of the Apache Standard Taglib, as well as links to the archives of older releases. You must verify the integrity of the downloaded files. We pro

    tomcat.apache.org

    페이지에 들어가 하단의 4개의 파일을 전부 다운로드 받아 라이브러리에 추가한다.

     

     

    - Impl : taglibs-standard-impl-1.2.5.jar (pgp, sha512)

    - Spec : taglibs-standard-spec-1.2.5.jar (pgp, sha512)

    - EL : taglibs-standard-jstlel-1.2.5.jar (pgp, sha512)

    - Compat : taglibs-standard-compat-1.2.5.jar (pgp, sha512)

     

     

     

     

     

    JSTL의 종류

     

     

    1. core tags

    - 변수 생성, URL 관리, 프로그램의 흐름을 제어(조건문, 반복문)

     

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    JSTL은 사용하기 전 core 를 JSP 파일 header 에 추가해야한다.
    <c:out>
    jsp에서 <%= %> 태그와 유사한 표현식의 결과를 표시
    <c:out value="${변수}"/>
    
    <c:import>
    상대 또는 절대 URL을 검색하여 내용을 var 문자열, varReader의 Reader 또는 페이지에 표시
    
    <c:set>
    계산 결과를 scope 변수에 설정
    
    <c:remove>
    특정 범위에서 지정된 범위 변수를 제거할 때 사용
    
    <c:if>
    조건을 테스트하는데 사용되는 조건부 태그이며, 표현식이 참인 경우에만 내용을 표시
    
    <c:forEach>
    기본 반복 태그이며 고정된 횟수 또는 초과되는 중첩된 본문 내용을 반복
    
    <c:redirect>
    브라우저를 새 URL로 리디렉션

     

     

     

    2. formatting

    - 메시지를 형식화, 번호 및 날짜, 통화 형식화 등을 지원

     

    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    
    
    <fmt:parseNumber>
    통화, 백분율 또는 숫자의 문자열 표현을 분석하는데 사용
    
    <fmt:formatNumber>
    특정형식 또는 정밀도로 숫자값을 형식화 하는데 사용
    
    <fmt:parseDate>
    시간과 날짜의 문자열 표현을 분석하는데 사용
    
    <fmt:formatDate>
    제공된 패턴 및 스타일을 사용하는 시간 및 날짜를 형식화
    
    <fmt:setTimeZone>
    시간대 구성 변수 내에 시간을 저장

     

     

     

    3. function

    - 문자열 조작 및 문자열 길이를 지원

     

    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
    
    
    <fn:contains()>
    지정된 하위 문자열을 포함하는 입력 문자열을 테스트하는데 사용
    
    <fn:indexOf()>
    지정된 하위 문자열이 처음 나타나는 문자열 내에서 인덱스를 반환
    
    <fn:split()>
    문자열을 하위 문자열 배열로 분할
    
    <fn:endWith()>
    입력 문자열이 지정된 접미어로 끝나는지 테스트
    
    <fn:trim()>
    문자열의 약쪽 끝 공백을 제거
    
    <fn:toLowerCase()>
    문자열의 모든 문자를 소문자로 변화
    
    <fn:toUpperCase()>
    문자열의 모든 문다를 대문자로 변환
    
    <fn:substring()>
    주어진 문자열 시작 및 끝 위치에 따라 문자열의 일부를 반환
    
    <fn:length()>
    문자열 내부의 문자수 또는 컬렉션의 항목수를 반환
    
    <fn:replace()>
    모든 문자열을 다른 문자열 시퀀스로 변환

     

     

     


     

     

     

     

    core 사용 예제)

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
         <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>JSTL 코어</title>
    </head>
    <body>
    	<h2>JSTL 코어</h2>
    	<p>c:out(출력)</p>
    	<p><c:out value="${'Hello jstl'}"/></p>
    	<hr>
    	
    	<p>c:set(변수 선언)</p>
    	<c:set var="userid" value="apple"/>
    	<p>아이디 : ${userid}</p>
    	<hr>
    	
    	<p>c:set(배열)</p>
    	<c:set var="memList" value='<%=new String[]{"apple", "banana", "orange"}%>'/>
    	<p>memList : ${memList}</p><!-- 메모리 주소 -->
    	<p>memList[0] : ${memList[0]}</p>
    	<hr>
    	
    	<p>c:remove(변수삭제)</p>
    	<p>아이디 : ${userid}</p>
    	<c:remove var="userid"/>
    	<p>아이디 : ${userid}</p>
    	<hr>
    	
    	<p>c:if(조건문)</p>
    	<c:set var="userid" value="apple"/>
    	<c:if test="${userid eq 'apple'}">
    		<p>로그인되었습니다.</p>
    	</c:if>
    	<c:remove var="userid"/>
    	<c:if test="${userid eq 'apple'}">
    		<p>로그인되었습니다.</p>
    	</c:if>
    	<c:if test="${not userid}">
    		<p>로그인에 실패하였습니다.</p>
    	</c:if>
    	<hr>
    	
    	<p>c:empty(empty 비교)</p>
    	<c:if test="${empty userid}">
    		<p>userid 데이터가 없습니다.</p>
    	</c:if>
    	<hr>
    	
    	<p>c:choose(조건문 switch문과 유사)</p>
    	<c:set var="userpw" value="1111"/>
    	<c:choose>
    		<c:when test="${userid}">
    			<p>아이디 변수가 존재합니다.</p>
    		</c:when>
    		<c:when test="${!empty userpw}">
    			<p>비밀번호 변수가 존재합니다.</p>
    		</c:when>
    		<c:otherwise>
    			<p>아이디, 비밀번호 변수가 모두 존재합니다.</p>
    		</c:otherwise>
    	</c:choose>
    	<hr>
    	
    	<%
    		String[] studentList = {"김사과", "반하나", "오렌지", "이메론"};
    		pageContext.setAttribute("studentList", studentList);
    	%>
    	<p>forEach(반복문)</p>
    	<table border="1" width="600">
    		<tr>
    			<th>idx</th>
    			<th>번호</th>
    			<th>이름</th>
    		</tr>
    		<c:forEach var="student" items="${studentList}" varStatus="status"><!-- varStatus: index 제공 -->
    			<tr>
    				<td>${status.index}</td>
    				<td>${status.count}</td><!-- count: 반복횟수 제공 -->
    				<td>${student}</td>
    			</tr>
    		</c:forEach>
    	</table>
    
    </body>
    </html>

     

    core 사용 예제

     

     

     

     

    formatting 사용 예제

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
    <%@ page import="java.util.Date" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>JSTL - formatting</title>
    </head>
    <body>
    	<h2>JSTL - formatting</h2>
    	<p><fmt:formatNumber value="1234.5678"></fmt:formatNumber></p>
    	<p><fmt:formatNumber value="50000"></fmt:formatNumber></p>
    	<p><fmt:formatNumber value="50000" type="currency" currencySymbol="$"></fmt:formatNumber></p>
    	<p><fmt:formatNumber value="0.1" type="percent"></fmt:formatNumber></p>
    	<hr>
    	<%
    		request.setAttribute("now", new Date());
    	%>
    	<p><fmt:formatDate value="${now}"/></p>
    	<p><fmt:formatDate value="${now}" type="date"/></p>
    	<p><fmt:formatDate value="${now}" type="time"/></p>
    	<p><fmt:formatDate value="${now}" type="both"/></p>
    </body>
    </html>

    formatting 사용 예제

     

     

     

     

    function사용 예제

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>JSTL - function</title>
    </head>
    <body>
    	<h2>JSTL - function</h2>
    	<p>length()</p>
    	<p>${fn:length('1234567890')}</p>
    	<hr>
    	
    	<p>indexOf()</p>
    	<p>${fn:indexOf('jstl fn 예제', 's')}</p>
    	<hr>
    	
    	<p>trim()</p>
    	<p>${fn:trim('     jstl fn 예제    ')}</p>
    	<hr>
    	
    	<p>substring()</p>
    	<p>${fn:substring('jstl fn 예제', 0, 4)}</p>
    	<hr>
    	
    	<p>replace()</p>
    	<p>${fn:replace('jstl fn 예제', 'jstl', 'Java Server Page Standard Tag Library')}</p>
    	<hr>
    	
    	<p>split()</p>
    	<c:set var="arr" value="${fn:split('j,s,t,l', ',')}"></c:set>
    	<c:forEach var="ch" items="${arr}" varStatus="i">
    		<p>${i.count} - ${ch}</p>
    	</c:forEach>
    	<hr>
    </body>
    </html>

    function사용 예제

     

     

     

     

     

    728x90

    '프로그래밍 > JSP' 카테고리의 다른 글

    [JSTL] 문자열을 Date 타입으로 파싱  (0) 2022.12.22
    JSP 게시판 만들기(파일업로드)  (0) 2022.12.10
    JSP 게시판 만들기(5)  (0) 2022.12.08
    JSP 게시판 만들기(4)  (0) 2022.12.06
    JSP 게시판 만들기(3)  (0) 2022.12.03

    댓글

Designed by Tistory.