Web/JSP/Servlet

JSTL(코어태그 까지됨.)

닉넥임 2013. 7. 25. 17:42
반응형

why?) JSTL : 

View = html/css/js + "JSP" + Java Beans

JSP -> XML tag? -> JSTL / EL : 간소화 -> View 단순!

JSP : java code : 기능 다양 !

<jsp:include> : 모듈화(template) !

<%@ include file=""%>


JSTL

<%@ include file=""%> -> 모듈화

-> 인자 전달이 잘 안됨 !

: 가급적이면 JSTL 코드 작성시에는 모듈화는 지양하라 !

: 기능이 부족 ! ex) 형변환 : 기능이 적음 !

-> 해결) 별도의 taglib(Java Bean code) 작성해야 됨!


-> ex) EL function ! 



 JSTL이란?

 - JSTL(JSP Standatd Tag Library)은 JSP 페이지에서는 논리적인 판단, 반복문의 처리, 데이터베이스 등의 처리를 하는 코드를 깔끔하게 작성하기 위해서 작성한 표준화된 커스텀 태그이다.

 




- JSTL을 사용하기 위한 준비사항!(1)


   1. http:tomcat.apache.org/ 에 접속한다.

  2. Taglibs 클릭


  3. Apache Standard Taglib 클릭!


  4. 원하는 버젼에 따라 download클릭!

 

   5. binaries/ 클리!


   6. 마지막으로 원하는 버젼과 원영체제에따라 선택후 다운받는다.


   7. 다운받은후 압축을풀어 lib 폴더내의 jstl.jar, standard.jar 파일을 프로젝트에 추가시킨다. 


   8. - 접두어를 사용하기 위해서는 라이브러리의 URI 식별자와 접두어를 연결해야 한다.

       - taglib 지시자는 두개의 애트리뷰트를 써야하고, 이두 에트리뷰트에 각각 URI 식별자와 접두어          를 값으로 주어야 한다. 

      ex) 

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


 


- JSTL이 제공하는 태그의 종류

 라이브러리

 하위 기능

 접두어

 관련URI 

 코어

 변수지원

 흐름 제어

 URL 처리

 c

 http://java.sun.com/jsp/jstl/core

 XML

 XML 코어

 흐름 제어

 XML 변환

 x 

 http://java.sun.com/jsp/jst/xml

 국제화

 지역

 메시지 형식

 숫자 및 날짜 형식

 fmt

 http://java.sun.com/jsp/jst/fmt

 데이터베이스

 SQL

 sql

 http://java.sun.com/jsp/jstl/sql

 함수

 콜렉션 처리

 String 처리

 fn

 http://java.sun.com/jsp/jstl/functions


- 코어태그

 기능분류

 태그 

 설명 

 변수 지원 

 set 

 JSP에서 사용될 변수를 설정한다. 

 remove

 설정한 변수를 제거한다.

 흐름제어

 if

 조건에 따라 내부 코드를 수행한다. 

 choose

 다중 조건을 처리할 때 사용된다.

 forEach

 콜렉션이나 Map의 각 항목을 처리할 떄 사용된다.

 forTokens

 구분자로 분리된 각각의 토큰을 처리할 떄 사용된다. 

 URL 처리

 import

 URL을 사용하여 다른 자원의 결과를 삽입한다. 

 redirect

 지정한 경로롤 리다이렉트한다. 

 url

 URL을 재작성한다.

 기타 태그

 catch

 예외 처리에 사용된다.

 out

 JspWriter에 내용을 알맞게 처리한 후 출력한다.



 set

 <c: set var="num" value= "100" scope="request" />

 <c: set var="sum" value=${num1+num2}"/>  value값으로 EL식가능

 <c: set var="sum" value="<%= num1+num2 %>" /> value값으로 익스프레션 가능

 - var : 변수이름, value : 초기값, scope : 변수 저장될 데이터 영역(page, request,  session, application)

 remove

 <c:remove var="code" scope="request" />

 if

 <c:if test="${param.num1 > param.num2 }">

        num1이 더큽니다.        <-   조건식의 결과가 true일때만 출력되는 코드

 </c:if>     

 choose

 <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>

 forEach

 <c:forEach var="cnt" begin="1" end="10" step="2">

        ${cnt} <br>

</c:forEach>

 : var : 카운터변수 begin : 시작값 end : 끈값, step : 증가치

 forTokens

 <c:forTokens var="pet" items="햄스터-이구아나-소라게" delims="-">

     ${pet} <BR>

 </c:forTokens>

 - var: 토큰을 대입할 변수,  items: 토큰을 포함할 문자열, delims: 구획문자

 import

 <c:import url="http://www.hanb.co.kr/binfo/import.jsp" >

     <c:param name="product" value="TV" />

     <c:param name="ad_index" value="007" />

 </c:import>

 - url: 호출할 웹자원의 URL, name: 데이터 이름, value: 데이터 값.

 - c:param의 경우 데이터를 덧붙일경우 사용. 

 redirect

 <c:redirect url="http://www.hanb.co.kr" />

 - url: 호출할 웹자원의 URL]

 - JSP페이지가 아닌 웹 자원과 다른 웹 서버에 있는 웹자원도 호출가능

 url

 <c:url var="myUrl" value="http://localhost:8080/brain09/add.jsp"

      <c:param name="num1" value="999"/>

      <c:param name="num2" value="1"/>

 </c:url>

 - var:변수이름, value:변수 값, name: 데이터 이름, value: 데이터 값

 - c:param의 경우 데이터를 덧붙일경우 사용. 

 catch

 <c:catch var="e">  <-- 익셉션 객체를 저장할 변수
     <% int result = num1 / num2 %>     <-- 에러가 발생할 수 있는 부분

     나눗셈의 결과는? <%= result %>      <-- 에러가 발생할 수 있는 부분

 </c:catch>

 - 자바언어의 try문과 비슷한 역활을한다. 

 - try블록에 해당하는 일만 하기에 catch 블록에 해당하는 부분은 별도로 코딩.

  <c:if test="${e !=null}">    <-- 익셉션이 발생했는지 체크하는 조건식

     에러 메시지: ${e.message}   <-- 에러 메시지를 출력하는 코드

 </c:if>

 out

 




반응형