날아라쩡글이의 블로그입니다.

JSTL(Core태그) 본문

중앙 HTA (2106기) story/model2(MVC패턴)

JSTL(Core태그)

날아라쩡글이 2021. 12. 14. 14:03
반응형

JSTL (JSP standard Tag Library)JSP표준태그 라이브러리 

  • 스크립틀릿을 사용해서 작성했던 자바코드를 대체할 수 있다. 
  • 외부라이브러리를 사용한다. 
    • java.sun.com에서 javaEE - >API document = >javax.servlet.jsp.jstl 
      • jstl에 관련된 API를 바탕으로 Tomcat이 구현한 것이다. 
  • JSTL의 태그 라이브러리는 자주사용하는 것들을 모아서 별도로 만든 라이브러리이다. 
    • JSTL표준라이브러리 
  • JSTL 파일을 다운받아서 WEB-INF/lib에 복사한다. 
    • 현재는 Tomcat라이브러리를 이용한다. smapleProject후 test를 통해 Tomcat에서 검증된 라이브러리를 사용한것이다. 
    • 나중에는 Marven저장소에서 JSTL태그라이브러리에서 다운 후 사용할 예정이다. (1.2버젼)
  • JSP파일에 사용할 태그라이브러리를 지시어를 사용해서 정의한다. 
    • <%@taglib prefix="별칭" uri="태그라이브러리식별자" %>
    • 태그라이브러리식별자를 짧은 이름으로 작성한게 별칭이다. 
    • JSTL태그라이브러리의 태그 종류 : 5가지가 존재한다. 
      • core 태그
        • <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
        • 가장 많이 사용되는 태그 라이브러리이다. 
        • 변수, 출력, 제어문, 반복문, URL처리를 지원한다. 
      • fmt태그 
        • <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
        • 숫자나 날짜에 대한 포맷팅을 지원한다. 
          • java.util의 new Date는 일반적인 날짜도 아니고, 영어로 출력된다. 
          • 내가 원하는 형식으로 출력이 된다. 년,월,일/시,분,초 등
        • 국제화처리를 지원한다. 
          • 클라이언트의 시스템 언어 설정에 맞는 언어를 자동으로 내려준다. 
      • function태그 
        • <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/function" %>
        • String 클래스의 주요메소드 사용을 지원한다. 
      • xml태그 
        • xml과 sql은 모델2의 ㅏ방식에서 거의 사용하지 않는다. 
        • jsp는 예전에는 DB access가 가능했지만, model2에서는 view로 표현되기 때문에 사용하지 않는다.
      • sql태그
        • 별칭의 경우 이름을 지정하는 것은 상관없지만 어떤 포맷팅인지 관례적으로 작성한다. 
        • 되도록 지키는 것이 좋다. 
      • .tld
        • <c:if>를 사용하면, .tld파일에서 if를 찾는 다. 어떤클래스를 사용하는지 mapping된 정보를 보도, lib에서 java class를 구현되있는 걸을 찾는다. 
        • 태그라이브러리정의 파일이라고 한다. 
      • tld라이브러리는 태그의 갯수만큼 존재한다. 
    • Core태그 
      • <c:out>태그 
        • <c:out value="${표현식 }">
        • 값을 출력할 때 사용한다. 
        • XSS(Cross site Scripting) 취약점 공격에 대한 가장 기본적인 방어를 지원한다. 
          • 악의적인 사용자가 공격하려는 사이트에 script를 넣어서 cookie나 sessionId와 같은 정보를 취득하는 것을 말한다. 
          • 주로 공개된 게시판의 게시글에 html과 script코드를 입력해서 해당 스크립트를 실행시키는 것이다.
          • 사이트 이용자가 작성하는 제목, 내용, 댓글의 컨텐츠에는 반드시 <c:out />태그를 사용해서 출력해주어야한다. 
        • 속성
          • value
            • 출력할 값을 지정한다. 
            • 생략할 수 없다. 
          • escapeXml
            • 특수문자 (<>"'&)를 변환할 지 여부를 지정한다. 
            • 기본값은 true다. 
            • 생략가능하다. 
            • 태그에서 사용하는 꺽쇠표시는 html을 에스케이프화 시킨다고 할 수있다.
            • 사용자가 직접입력하는 컨텐츠는 true로 출력되도록 해야한다.
          • default
            • value에서 지정된 갑싱 null인 겨우 표현할 값을 지정한다.
            • 생략가능하다. 
            • default의 값을 설정하지 않는다면 null값은 표시되지 않는다. 
      • <c:if>태그 
        • if문과 동일한 역활을 수행한다. 
        • else에 해당하는 태그는 없다. 
        • <c:if test="${표현식 }">html컨텐츠</c:if>
          • true라면 html컨텐츠가 출력이 되고, false면 html컨텐츠가 출력되지 않는다. 
          • 항상 끝</es:if>태그를 붙여주어야한다. 
        • 차라리 getter메소드에서 작성 후 뽑아내는것이 가독성과 결과값도 출력이 좋다. 
        • 속성
          • test
            • 검사조건을 정의한다. 
            • 결과값이 boolean타입이어야한다. 
            • 생략할 수 없다.
      • <c:choose><c:when><c:otherwise>
        • <c:choose>내부에 when과 otherwise를 적는다. 
        • if ~else if ~else if ~else와 동일한 역활을 수행한다. 
        • choose<when+, otherwise?>
          • when은 1개이상, otherwise는 생략가능하지만 사용한다면 1개이하로 사용해야한다. 
        • choose사이에는 태그를 작성할 수 없고, when과 otherwise사이에 작성해야한다.
        • when은 if와 동일하다. 전부 false면 otherwise가 출력된다. 
        • when은 조건식을 다르게해서 여러번 정의할 수 있다. 
        • when이 여러개일 때 한개의 조건식이 true라면 남아있는when은 검사하지 않는다. 
      • <c:forEach>태그
        • for문과 같은 역활을 수행한다.
        • 배열 혹은 콜렉션(List,Set)에 대해서 그 항목의 갯수만큼 반복작업을 수행한다. 
        • <c:forEach var="변수명" items="${표현식 }" varStatus="반복작업변수명">
          • items의 표현식으로 찾은 값이 반드시 배열 혹은 콜렉션이어야한다. 
          • 검색된 배열 혹은 콜렉션의 요소갯수만큼 컨텐츠를 반복 출력한다. 
          • var은 배열 혹은 콜렉션에서 반복수행시 해당요소가 저장되는 변수의 이름을 지정한다. 
          • 향상된 for문이라고 생각하면 쉽다.
        • varStatus에 지정된 변수에는 현재 반복상태정보를 담고있는 객체가 전달된다. 
        • 반복상태정보 
          • index : 현재 추출한 요소의 인데스 번호 (0부터 시작)
          • count : 현재 반복횟수 (1부터 시작)
          • first: 첫번째 요소인 경우 true
          • last :마지막 요소인 경우 true로 출력된다. 

이렇게 selected의 형태를 구할 수 있다. 

  • <c:forEach var="pagination" begin="시작" end="끝">
    • begin은 시작값, end는 끝값으로 지정한다. 
    • begin과 end는 정수값이어야한다. 
    • begin, end의 구간만큼 컨텐츠를 반복출력한다. 
    • var은 현재 숫자 값을 저장하는 변수의 이름을 저장한다. 
  • item용법은 속성의 list를 반복해서 표현하는 것이다.
  • begin과 end는 지정된 부분부터 지정된 곳까지 처리하는 것이다. 

<c:set>태그 

  • EL로 표현할 수 있는 값을 가진 변수를 선언한다. 
  • 사용법
    • <c:set var="변수명" value="${표현식 }">
  • scope를 명시해서 어디에 저장할지 지정하는 것이 가능하다.
  • 거의 pageContext에 많이 사용한다. 
  • 원하는 객체에 속성이 저장되게 만들 수 있다. "active하는 것에 많이 사용된다. "
      • include로 연결하여 menu eq로 꺼내서 동일하면 active하게 설정가능하다. 
      • 계산된 결과를 담거나 페이지네이션으로의 용도로 활용을 많이한다. 
      • scope에 대한 명시는 따로 하지 않는다. 
    <c:remove>
    • 값을 지우는 것이다. 
    • 값을 지우기 때문에 해당하는 속성명만 작성해주면된다. var로 
반응형

'중앙 HTA (2106기) story > model2(MVC패턴)' 카테고리의 다른 글

JSTL(fmt태그)  (0) 2021.12.15
EL  (0) 2021.12.13
URL과 URI의 차이  (0) 2021.12.13
MVC패턴을 웹 개발방식에 사용하는 model2개발방식  (0) 2021.12.10
Comments