JSP JSTL
Table of contents
Custom Tag
What is Custom Tag?
프로그램을 개발하다보면 JSP액션태그나 JSTL태그만으로 부족할 때가 있는데 이를 지원하기 위해서
사용자가 원하는 목적에 맞게 새로운 태그를 만들어서 사용할 수 있도록 하는 태그
Advantage of Custom Tag
재사용: 한번 작성한 커스텀 태그는 어떤 JSP 컨테이너에서도 사용이 가능함
쉽고 단순한 JSP 코드를 작성 : 자바코드에 익숙하지 않은 개발자들도 커스텀 태그를 사용하면 보다 쉽게 JSP 페이지를 작성가능
코드의 가독성 향상 : 커스텀 태그를 사용하면 스크립트 코드를 줄일 수 있기 때문에 JSP의 가독성을 높일 수 있음
Sort of Custom Tag
JSP 1.2 스타일로 구현한 커스텀 태그
JSP 2.0 또는 그 이상 버전의 SimpleTag를 사용한 커스텀 태그
JSP 2.0 또는 그 이상 버전의 태그 파일을 사용한 커스텀 태그
위 세가지 중 첫번째와 두번째 방식이 주로 커스텀 태그의 표준 인터페이스를 구현하거나 클래스를 상속받아서 구현하기에 개발자가 사용하기 적합함
Tag File
서블릿의 복잡한 구현 과정을 JSP가 쉽게 처리해 주는 것 처럼, 커스텀 태그 클래스를 만들기 위한 복잡한 과정을 커스텀 태그 파일이 쉽게 처리해줌
정의하자면, JSP 문법을 사용해서 커스텀 태그로 동작할 수 있도록 만들어진 소스 코드
태그 파일은 JSP 페이지와 동일한 문법을 사용함
웹 컨테이너가 자동으로 태그파일도 커스텀 태그 클래스로 변환함
태그 파일에서 사용할 수 있는 디렉티브
디렉티브 | 설명 |
---|---|
tag | JSP 페이지의 page 디렉티브와 동일. page디렉티브가 JSP 페이지에 대한 설정 정보 등을 명시하는 것 처럼 tag디렉티브는 태그 파일의 정보를 명시 |
taglib | 태그 파일에서 사용할 태그 라이브러리를 명시할 때 사용, 사용법은 JSP 페이지와 동일 |
include | JSP 페이지와 마찬가지로 태그 파일에 특정한 파일을 포함시킬 때 사용. 단, 태그 파일에 포함되는 파일은 태그 ㅏ일에 알맞은 문법으로 작성되어야 함 |
attribute | 태그 파일을 커스텀 태그로 사용할 때 입력받을 속성을 명시 |
variable | EL변수로 사용할 변수에 대한 정보를 지정 |
태그디렉티브의 속성
속성 | 설명 |
---|---|
display-name | 태그파일을 사용될 이름을 지정. 기본값은 확장자 “.tag”를 제외한 나머지 파일이름 |
body-content | body 내용의 종류를 정의 empty, tagdependent, scriptless의 세가지값 중 하나를 사용할 수 있음 |
dynamic-attributes | 동적속성을 정의 속성<key, value>를 저장하는 Map객체를 page범위의 속성에 저장할 때 사용할 이름을 정의 |
description | 태그에 대한 설명 |
import | page 디렉티브의 import 속성과 동일 |
pageEncoding | page 디렉티브의 pageEncoding 속성과 동일 |
defferedSyntaxAllowedAsLiteral | page 디렉티브의 defferedSyntaxAllowedAsLiteral 속성과 동일, 이 값이 true일 경우 ${expr} or #{expr}형식의 값은 문자열로 처리하는 옵션 |
trimDirectiveWhitespaces | page 디렉티브의 trimDirectiveWhitespaces 속성과 동일 |
태그 파일의 위치와 태그 파일의 참조 방법
태그파일에서 사용가능한 기본 객체
jspContext : pageContext가 제공하는 setAttribute(), getAttribute() 메서드를 그대로 제공하며 각 속성과 관련된 작업을 처리
request : JSP 페이지의 request 기본객체와 동일함
response : JSP 페이지의 response 기본 객체와 동일
session : JSP 페이지의 session 기본 객체와 동일
application : JSP 페이지의 application 기본 객체와 동일
out : JSP 페이지 out 기본객체와 동일
태그파일의 위치
WEB-INF/tags 폴더나 그 하위폴더에 위치. 이폴더에 위치한 파일중에서 ~.tag, ~tagx확장자 파일만 태그파일로 인식함
JSTL
What is JSTL?
JSTL(JavaServer Pages Standard Tag Library) : 커스텀 태그 중 자주 사용하는 것들을 별도로 표준화한 태그 라이브러리
커스텀 태그 : JSP를 확장시켜주는 기능, 액션태그와 마찬가지로 태그 형태로 기능을 제공
액션태그와의 차이점은 커스텀 태그는 개발자가 직접 개발해주어야 함
Why Use JSTL?
사용목적 : JSP코드에서 중복되는 것을 모듈화하거나 스크립트 코드를 사용할 때 발생하는 소스 코드의 복잡함을 없애기 위해 사용
JSP는 스크립트릿과 표현식등의 스크립트 코드와 HTML등의 코드가 뒤섞여서 사용하기 때문에
JSP코드는 가독성이 떨어지고 코딩하기가 매우 복잡하게 되어있어서 개발이 편리하지 않게 되었음
그래서 JSP를 새로운 태그를 포함한 표준 라이브러리 형태로 제공하여 보다 쉽게, 가독성이 좋게 코딩할 수 있도록 제공하는데
JSP페이지에서 많이 사용되는 논리적인 판단, 반복처리, 포맷처리 등을 쉽게 할 수 있도록 표준으로 만들어서 라이브러리형태로 제공하는 것이 JSTL
Features of JSTL
if-else조건문 그리고 for 구문과 같은 반복 처리를 커스텀 태그를 이용해서 구현할 수 있도록 함
스크립트 코드보다 이해하기 쉽기 때문에 자바 언어에 익숙하지 않더라도 JSTL을 이용해서 어느 정도 논리적인 처리를 수행할 수 있음
JSTL Tags
JSTL은 다섯가지 태그를 제공하고 있음
→ 코어, 국제화, 함수를 가장 많이 사용함
라이브러리 | 주요기능 | 접두어 | 관련 URI |
---|---|---|---|
core | 변수지원, 흐름제어, URL처리 | c | http://java.sun.com/jsp/jstl/core |
XML | XML코어, 흐름제어, XML 변환처리 | x | http://java.sun.com/jsp/jstl/xml |
국제화 | 지역, 메시지형식, 숫자/날짜 형식 | fmt | http://java.sun.com/jsp/jstl/fmt |
DB | SQL, 메시지 형식 | sql | http://java.sun.com/jsp/jstl/sql |
함수 | 컬렉션처리, Strin 처리 | fn | http://java.sun.com/jsp/jstl/functions |
Download JSTL Library
jstl-1.2.jar 파일을 클릭해서 다운로드 하면 됨