JSTL(JSP Standard Tag Library)는 자주 사용되는 태그들의 모음이며, 태그 형태로 JSP 코드의 역할을 수행한다. JSP 코드가 없어도 반복문 등을 쓸 수 있게 해 주고, 여러 라이브러리를 포함하고 있다. 먼저 core 라이브러리는 변수 선언, 조건문, 반복문, 페이지 이동 등 기본적인 동작을 처리한다. Formatting 라이브러리는 데이터 국제화(다국어), 형식화(날짜, 숫자, 시간 등)를 처리하고, DB 라이브러리는 SQL구문(CRUD)을 처리한다. 그리고 XML 라이브러리는 xml 문서를 읽고 처리하는 동작을 수행한다.
JSTL 다운로드
Apache Tomcat 홈페이지에서 Taglibs - Download를 들어간다.
그리고 Jar Files에서 Compat을 제외한 3가지를 모두 다운로드하여 이클립스 내 프로젝트의 WEB-INF 폴더 밑 lib 폴더 안에 붙여 넣는다.
JSTL 사용 ( + EL표현식)
JSTL을 사용하려면 페이지 상단에 JSP 지시어로 taglib을 적는다. prefix로 임의의 접두사를 결정하고 uri로 라이브러리 위치를 지정한다. 보통 접두사로 core 라이브러리는 c, formatting 라이브러리는 fmt 등 직관적인 형태다.
EL표현식은 jsp 표현식을 html 형식으로 대신하기 위한 것이다. ${ } 형태로 작성하는데, JSTL과 같이 쓰는 경우가 매우 많다. JSTL 변수는 문자 타입만 가능하기 때문에 숫자 타입의 EL표현식과 같이 사용한다. html처럼 사용되지만 객체를 호출하는 등 jsp 코드의 역할도 하기 때문에 유용하다. EL표현식은 이후에 더 자세하게 설명할 것이다.
core : out (출력문)
out은 value에 출력할 값을 적고, 값이 null일 때는 아예 출력되지 않거나 default값이 출력된다.
core : set (변수 선언)
var에 변수명, value에 값을 적어 저장한다. 영역(scope)을 생략하거나 빈 상태로 두면 자동 page 영역이 지정되고, 영역 순서는 page - request - session - application 이다. 참고로 JSTL도 jsp와 비슷해서 jsp 주석을 써야 한다.
core : if / choose (조건문)
if는 단일 조건, choose는 switch-case문과 같고, else가 없기 때문에 여러 조건을 확인해야 하면 choose를 쓴다. test 결과가 true일 때 코드가 실행되며, choose 태그 안에 when 태그로 조건을 지정한다. 여기서 gt, lt는 태그처럼 생겨서 헷갈릴 수 있는 비교연산자를 대신한다. 참고로 <form>에서 액션 페이지가 없으면 본인 페이지를 호출한다.
core : forEach / forTokens (반복문)
java의 for문과 형태가 비슷하다. items에 배열 등을 넣어서 begin/end 없이 쓰면 모든 값을 출력(inhanced for문)할 수도 있다. forTokens는 items로 문자열을 받아서 delims에 지정된 기호로 문자열을 잘라 출력한다.
fmt : number
fmt의 number는 숫자 형식 지정을 수행한다. groupingUsed는 3자리마다 점을 찍을지 여부, pattern은 출력 형식, currency 타입일 때 심볼을 지정하는 currencySymbol 등이 있다.
fmt : date
fmt 중 date는 날짜/시간에 관한 것이다. type은 날짜, 시간, 모두 중 선택, dateStyle이나 timeStyle은 출력 길이, pattern은 출력 형식을 임의로 지정한다.
fmt : Locale
마지막으로 locale은 지역 지정이다. value에 나라_언어를 형식대로 입력하면 적용된다. 아래 코드는 순서대로 한국, 미국, 중국, 일본이다.
'Study > JSP' 카테고리의 다른 글
[JSP]서블릿(Servlet)과 EL표현식 (0) | 2022.03.10 |
---|---|
[JSP]커넥션풀/JNDI - 이클립스와 MySQL 연결 (0) | 2022.03.03 |
[JSP]자바빈(JavaBean) - 이클립스와 MySQL 연결 (0) | 2022.02.20 |
[JSP]JDBC - 이클립스와 MySQL 연결 (0) | 2022.02.17 |
[JSP]세션(Session)과 쿠키(Cookie) (0) | 2022.02.10 |