본문 바로가기
JSP

표준태그라이브러리(JSTL)

by chief_sac 2021. 7. 6.
반응형

표준태그라이브러리(JSTL)

정의

커스텀 태그 라이브러리 (server side)

주의사항 커스텀태그 == java코드임 그냥변수가아니고 EL변수라는걸 기억해야함

사용법

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

태그종류

5개있는데 코어와 국제와 함수가 지금도 쓰이고 나머지는 거의 사용하지 않습니다. 이유는 model1 구조가 아니라서

종류: 코어,xml(마샬링용),국제화,데이터베이스,함수

하는일

  • 코어 :
    <c:set var="test" value="테스트" scope="request"/><!-- (기본은 페이지 스코프에 들어가있음) -->
            ${requestScope.test },  연상구조배열 :${requestScope["test"] }
    <c:remove var="test" scope="request"/><!-- 스코프를 안쓰면 모든 스코프에 test를 다지워버린다 -->
            ${requestScope.test }, ${requestScope["test"] }
    2) 흐름 제어 : 조건문 : if다중조건문 : choose
    when
    otherwise반복문 : forEach3) URL (재)처리 : url , (클라이언트에서 사용할수있는 절대경로를 만들어줌), (쿠키트레킹체크해서 쿠키가 없더라도 세션을 유지할수있게해줌)
  • <c:url var="memberList" value="/member/memberList.do"> <c:param name="page" value="2"></c:param> <!-- 페이지만들어줌 --> </c:url> <a href="${cPath }/member/memberList">회원목록의 2페이지</a> <a href="${memberList }">회원목록의 2페이지</a>
  • 향상된 for문 : for(block variable : collection) : items, var <%-- <c:forEach items="" var=""> </c:forEach> --%> 일반 for문 : for(선언절;조건절;증감절) : var, begin, end, step ...(주의사항 step은 0보다 커야한다, 1인경우 생략가능) LoopTagStatus(varStatus) 프로퍼티 : index(var속성의 값), count(몇번째 반복인지) first, last <c:forEach var="i" begin="1" end="5" step="2" varStatus="vs"> ${i } - ${vs.count } 번째 반복,${vs.first },${vs.last } </c:forEach>
  • <c:choose> <c:when test="${ empty test}">없다</c:when> <c:when test="${not empty test}">있다</c:when> </c:choose>
  • <c:if test="${empty test }"> test없음. </c:if> 삼항:${empty test ? "없다" : "있다" }
  • 1)EL 변수(속성) 지원 : set, remove

4) 기타 : import, out (크롤링에 활용가능)

```
<c:import url="https://www.naver.com" var="naver"/>
        <c:out value="${naver }" escapeXml="${false }"/><!-- naver 소스를 들고옴 -->
```
  • 국제화 :locale처리가 쉬워짐 , 다국적메시지지원과 다국적 포메팅2) 메시지 형식 처리: - 언어 결정(한글,영문) - 메시지 번들 작성(properties) - locale 결정 - 메시지 출력 :번들 로딩, 메시지사용.
  • <c:if test="${empty param.lang }"> <c:set var="locale" value="${pageContext.request.locale}"/> </c:if> <c:if test="${not empty param.lang }"> <c:set var="locale" value="${param.lang }"/> </c:if> <fmt:setLocale value="${locale}"/> - 메시지 출력 : 번들로딩, 메시지 사용. <fmt:bundle basename="kr.or.ddit.messages.message"> <fmt:message key="bow"/> </fmt:bundle> - parsing : parseNumber, parseDate(문자를 날짜로바꿔줌) - formatting : formatNumber(숫자를 문자로), formatDate(날짜를 문자로) <%-- <fmt:setLocale value="en_US"/><!-- 파싱할 언어 --> --%> <fmt:formatNumber value="30000" type="currency"/><!-- 30,000 type="currency"$30,000.00 -->
  • 1) 언어처리 : serLocale , message
  • 함수 : el 3.0버전은 필요없지만 아닐수도있기때문에 배움
  • (String에서 가지고있던 메소드들을 본따서 만듬) ${fn:indexOf("abcde", "a") } <!-- stringtokenize 반대 (조립해줌) --> <c:set var="array" value='${fn:split("a,b,c,d,e", ",") }'></c:set> ${fn:join(array,"|") }<!-- a|b|c|d|e -->

함수만들기

이름없애자 코드쓸때마다 javaee붙여야함

tld라는 파일명으로 생성

주의사항 : 사용하려는 클래스에 static메서드가없으면 직접만들어야한다 ex) new Date()

반응형

'JSP' 카테고리의 다른 글

JSP Directives(JSP 지시자란?)  (0) 2021.07.19
POS 무료 템플릿 (자체 제작)  (0) 2021.07.02
그림으로 설명하는 MVC패턴 5 layer architecture  (0) 2021.06.30
JSP 스코프에 대하여  (0) 2021.06.29
JSP의 표현언어 EL태그  (0) 2021.05.29