쌍용 강북 교육센터 국비학원 Day 61일차
JSTL
HTML 코드 내에 java 코드인 스크립틀릿 <%= student %>를 ${student}로, <%=if %>문을 <c:if>, <%=for%>문을 <c:forEach>로 대체하여 사용한다. 예전에는 스크립틀릿을 많이 사용했지만 가독성이 떨어지고, 뷰와 비즈니스로직의 분리로 인해 현재는 JSTL을 많이 사용하는 추세이다.
JSTL은 자바 서버 페이지 표준 태그 라이브러리 (Java Server Pages Standard Tag Library) 이다. JSTL은 Java EE 기반의 웹 애플리케이션 개발 플랫폼을 위한 컴포넌트 모음이다. JSTL은 XML 데이터 처리와 조건문, 반복문, 국제화와 지역화와 같은 일을 처리하기 위한 JSP 태그 라이브러리를 추가하여 JSP 사양을 확장했다.
JSTL은 JSP 페이지 내에서 자바 코드를 바로 사용하지 않고 로직을 내장하는 효율적인 방법을 제공한다. 표준화된 태그 셋을 사용하여 자바 스클립틀릿 코드가 섞여있는 것보다 코드의 유지보수와 로직의 분리, 가독성이 좋아져 개발자가 아닌 HTML/CSS를 다루는 디자이너가 간단한 코드 작업을 쉽게 수행하는 데 효과적이다.
JSTL 사용방법
JSTL을 사용하기 위해서는 JSTL jar 파일을 설치해야 한다. (필자는 Tomcat을 이용했다)
JSTL Core의 태그들
태그명 | 설명 |
<c:set> | 변수의 선언. 변수에 값을 할당 |
<c:out> | 값을 출력 |
<c:if> | 조건식에 해당하는 블럭과 사용될 scope설정 |
<c:choose> | 다른 언어의 switch와 비슷 |
<c:when> | switch문의 case에 해당 |
<c:otherwise> | switch문의 default에 해당 |
<c:forEach> | 다른언어의 loop문 items 속성에 배열 또는 List를 할당할 수 있다. |
<c:forTokens> | items 속성에 하나의 문자열을 가져와 delims 구분자로 나눠 토큰을 반복. |
EL (Expression Language)
표현식 언어라고 하며 새로 추가된 스크립트 언어로서 초기의 EL은 JSTL의 액션 태그에서만 작동하는 문제가 있었는데, JSP 2.0 부터는 JSP 컨테이너가 EL표현식을 해석할 수 있게 되어 표준 액션 태그, 커스텀 태그, 템플릿 데이터와 같이 자바코드를 사용해야 했던 모든 곳에 EL을 사용할 수 있다.
ex) 스크립틀릿 코드 <%= name %> 와 EL의 ${ name } 은 같다.
EL은 값이 없는 변수(null) 에 대해 좀 더 관대하고 데이터 형 변환을 자동으로 해주는 특징이 있다. EL을 사용하면 값이 없거나 형 변환 등에 전혀 신경 쓸 필요 없이 서버로 전송해서 형변환 없이 사용할 수 있다.
EL의 내장객체
객체명 | 설명 |
${pageScope} | page Scope에 접근하기 위한 객체 |
${reqeustScope} | request Scope에 접근하기 위한 객체 |
${sessionScope} | session Scope에 접근하기 위한 객체 |
${applicationScope} | application Scope에 접근하기 위한 객체 |
${param} | 파라미터 값을 가져오기 위한 객체 |
${header} | 헤더 값을 가져오기 위한 객체 |
${cookie} | 쿠키 값을 가져오기 위한 객체 |
${initParam} | JSP 초기 파라미터를 가져오기 위한 객체 |
${pageContext} | pageContext 객체에 접근하기 위한 객체 |
EL의 연산자 종류 및 표현법
연산부호 | 연산자 |
/ | div |
&& | and |
|| | or |
== | eq |
!= | ne |
< | gt |
> | lt |
<= | ge |
>= | le |
empty | null 이거나 빈 문자열이면 true |
not empty | null도 아니고 빈 문자열도 아니면 true |
JSTL fn의 태그
Function 선언
함수 사용법 - ${fn:함수명}
함수 | 설명 |
length (obj) | obj가 Conllection인 경우 저장된 항목의 개수를, 문자인 경우 문자열의 길이를 반환 |
toUpperCase (str) | str을 대문자로 변환 |
toLowerCase (str) | str을 소문자로 변환 |
substring (str, idx1, idx2) | str.substring (idx1, idx2)의 결과를 반환, idx2가 -1일 경우 str.substring (idx1)과 동일 |
substringAfter (str1, str2) | str1에서 str1에 포함되어 있는 str2 이후의 문자열을 구함 |
substringBefore (str1, str2) | str1에서 str1에 포함되어 있는 str2 이전의 문자열을 구함 |
trim (str) | str 좌우의 공백 문자를 제거 |
replace (str, src, dest) | str에 있는 src를 dest로 변환 |
indexOf (str1, str2) | str1에서 str2가 위치한 인덱스를 구함 |
startsWith (str1, str2) | str1이 str2로 시작할 경우 true, 그렇지 않을 경우 false를 반환 |
endsWith (str1, str2) | str1이 str2로 끝나는 경우 true, 그렇지 안을 경우 false를 반환 |
contains (str1, str2) | st1이 str2를 포함하고 있을 경우 true를 반환 |
containsIgnoreCase (str1, str2) | 대소문자 구분없이 str1이 str2를 포함하고 있을 경우 true를 반환 |
split (str1, str2) | str2로 명시한 글자를 기준으로 str1을 분리해서 배열로 반환 |
join (array, str2) | array에 저장된 문자열을 합침, 각 문자열의 사이에는 str2가 붙음 |
JSTL fmt의 태그
fmt 태그는 Formatting 태그로 포맷에 관련된 태그이다.
fmt 선언
fmt 태그의 종류
태그명 | 내용 |
requestEncoding | value 속성을 통해 지정한 문자 셋으로 변경 |
setLocale | 통화 기호나 시간 대역을 설정한 지역에 맞게 표시 |
timeZone | 특정 영역의 시간대를 설정 |
setTimeZone | 특정 영역의 시간대 설정 정보를 변수에 저장 |
bundle | basename 속성에 지정된 properties 파일을 읽어옴 |
setBundle | properties 파일을 읽어와 다양한 영역에서 참조할 수 있게 설정 |
message | bundle 태그를 통해 저장된 key로 value를 가져온다 |
formatNumber | 숫자를 특정 양식에 맞추어 출력 |
parseNumber | 문자열을 숫자 형식으로 변환 |
formatDate | 날자 정보를 가진 객체(Date)를 특정 형식으로 변호나하여 출력 |
parseDate | 문자열을 날짜 형식으로 변환하여 출력 |
- formatNumber 속성
속성명 | 설명 | 필수여부 |
value | 원하는 표현 방식으로 사용하기 위한 숫자 데이터 | Yes |
type | 표시할 타입 지정(NUMBER, CURRENCY, PERCENT) | No |
pattern | 화면에 표현할 데이터 스타일을 지정하며 패턴은 java.text.DecimalFormat 클래스의 포맷 방식을 따름 | No |
currencyCode | type 속성이 "currency"일 경우 인식할 화폐 단위 | No |
currencySymbol | type 속성이 "currency"일 경우 표시할 화폐 단위 | No |
groupingUsed | ',' 와 같은 각 숫자 단위의 구분자 표시 여부 | No |
maxIntegerdigits | 화면에 표시할 숫자의 최대 자릿수 | No |
minIntegerDigits | 화면에 표시할 숫자의 최소 자릿수 | No |
maxFractionDigits | 화면에 표시할 소수점 이하 숫자의 최대 개수 | No |
minFractionDigits | 화면에 표시할 소수점 이하 숫자의 최소 개수 | No |
var | 변환된 숫자 데이터를 담을 변수 생성 | No |
fmt 태그의 자세한 설명 참고 - https://sinna94.tistory.com/11
'Web > JSP' 카테고리의 다른 글
쌍용강북교육센터 국비 학원 Day 63일차 JSP (MVC 패턴) (0) | 2023.04.03 |
---|---|
쌍용강북교육센터 국비 학원 Day 62일차 JSP 구현 (0) | 2023.03.31 |
쌍용강북교육센터 국비 학원 Day 60일차 JSP (표준 액션 태그 forward, JavaBean, useBean) (0) | 2023.03.29 |
쌍용강북교육센터 국비 학원 Day 59일차 JSP (Servlet, Filter, Action) (0) | 2023.03.28 |
쌍용강북교육센터 국비 학원 Day 58일차 JSP (JSP 란?, Web Server, Web Container) (0) | 2023.03.27 |