EL (Expression Language)
EL (Expression Language)의 정의
- 기존 JSP의 표현식을 더 간단하게 작성하기 위한 문법
JSP 문법
- 선언부 <%! %>
- 스크립트릿 <% %>
- 표현식 <%= %>
- 주석 <%-- --%>
EL 문법
- <%=name%> --> ${name}
- JSP의 내장객체는
out, page, session, request, response
이 있다.
- EL의 내장객체는
pageScope, sessionScope, requestScope, responseScope
이 있다.
EL의 연산자
.
: 빈 접근 연산자
[]
: 배열 / 컬렉션 접근 연산자
()
: 우선순위
x ? a : b
: 삼항 연산자
empty
: 값이 null일 경우에 true
+, -, *, /, %
: 산술 연산자
&&, ||, !
: 논리 연산자
==, !=, >, <, >=, <=
: 비교 연산자
JSTL
- 정식 명칭은 자바서버 페이지 표준 태그 라이브러리 (JavaServer Pages Standard Tag Library) 이다.
JSP
페이지에서 일반적인 핵심 기능을 캡슐화하여 제공되는 JSP 태그의 컬렉션이다.
JSP
페이지 내에서 자바 코드를 바로 사용하지 않고 로직을 내장하는 효율적인 방법을 제공한다.
- 표준화된 태그 셋을 사용하여 자바 코드가 들락거리는 것보다 더 코드의 유지보수와 응용 소프트웨어 코드와 사용자 인터페이스 간의 관심사의 분리로 이어지게 한다.
- JSTL은 일반적인 반복 및 조건, 포매팅 작업, SQL 태그 조작을 위한 태그에 대한 지원을 한다.
표준 태그 라이브러리
Core
- 가장 자주 사용되는 jstl 태그
- 일반적인 프로그래밍에서 사용되는 기능 제공
- 프로그래밍에서 기본적으로 필요한 변수 선언, 제어문, 일반적인 로직 등의 기능 제공
Core
태그 사용하기 위해서 taglib
지시자 선언해야 함
Core
태그 종류
<c:out>
- <%= ... %> 표현식과 동일하게 JSP 페이지에 출력되는 태그
<c:set>
- page,request,session,application 4개 영역의 jsp저장소에 변수를 선언하는 태그
<c:remove>
- page,request,session,application 4개 영역의 jsp저장소에 변수를 제거하는 태그
<c:if>
<c:choose>, <c:when>, <c:otherwise>
- 다중 조건을 사용하기 위한 태그
- <c:choose> 태그 안에 여러 조건을 위해 <c:when>태그가 여러번 사용 가능
- <c:when>조건에 포함되지 않은 조건들은 <c:otherwise>태그를 사용하여 선언
<c:foreach>
- 배열이나 Collection 객체의 요소를 사용하기 위해 제공되는 태그
<c:forTokens>
- StringTokenizer 클래스의 기능처럼 문자열에 구분자를 제거하고 요소를 사용하기 위해 제공되는 태그
<c:import>
- include지시자와 같이 다른 페이지의 내용을 포함하기 위한 태그
- page 지시자의 import와 다르다!
<c:url>
<c:param>
- <c:import>와 <c:url>에서 매개변수를 선언하는 태그
<c:redirect>
- query를 포함한 지정한 url로 웹페이지가 전환되는 태그
<c:catch>
- try..catch와 같이 예외처리를 하기 위한 태그
- 국제화된 웹 사이트에 대한 날짜, 시간 및 숫자 텍스트를 포맷하고 표시하는데 사용되는 기능 제공
- 날짜,시간,숫자,텍스트 포맷,국제화에 따른 언어 설정 기능 제공
Formatting
태그 사용하기 위해서 taglib
지시자 선언해야 함
- Formatting 태그 종류
- fmt:requestEncoding
- fmt:setLocale
- 사용하고자 하는 국가,지역 및 언어 설정 태그
- fmt:formatNumber
- 숫자를 원하는 문자열 형식으로 변환시키는 태그
- fmt:parseNumber
- 문자열을 원하는 숫자 형식으로 변환시키는 태그
- fmt:formatDate
- 날짜 및 시간을 원하는 형식으로 출력시키는 태그
- fmt:parseDate
- 문자열을 원하는 날짜 및 시간 형식으로 출력시키는 태그
- fmt:timeZone, fmt:SetTimeZone
- 원하는 시간대 설정 변수의 타임존 설정을 위한 태그
- TimeZone태그는 태그를 열고 닫는 영역에서만 사용
- fmt:bundle
- fmt:setBundle
- fmt:message
SQL
테이블 생성
CREATE TABLE MEMBER (
ID LONG AUTO_INCREMENT NOT NULL, -- 아이디 (기본키)
NAME VARCHAR(255), -- 이름
AGE INTEGER NOT NULL, -- 나이
PRIMARY KEY (ID)
);
데이터 입력
INSERT INTO MEMBER(NAME, AGE) VALUES('sally', 30);
INSERT INTO MEMBER(NAME, AGE) VALUES('john', 20);
INSERT INTO MEMBER(NAME, AGE) VALUES('philip', 40);
- 관계형 DB (RDBMS)와 상호 작용하는 태그 제공
- 사용법
- SQL 태그 종류
sql:setDataSource
sql:query
sql:update
sql:param
sql:dateParam
- 지정된 java.util.Date의 값으로 SQL문에서 매개변수 설정
sql:transaction
XML
Function
- 일반적인 문자열을 가공하고 조작하기 위한 표준함수 제공
- 사용법
- Function 태그 종류
fn:length(obj)
- obj가 문자열이면 길이 리턴, List나 Collection이면 현재 항목 개수 반환
fn:substring(str, i, j)
- str 문자열에서 i에서 j-1 까지 문자열 리턴
fn:substringAfter(str1, str2)
- str1 문자열에서 str2 문자열 이후 문자열 리턴
fn:substringBefore(str1, str2)
- str1 문자열에서 str2 문자열 이전 문자열 리턴
fn:toUpperCase(str)
fn:toLowerCase(str)
fn:replace(str, src, dest)
- str 문자열에 있는 src 문자열을 dest로 변경한 문자열 리턴
fn:indexOf(str1, str2)
- str1 문자열에 str2로 시작된 문자열 리턴
fn:startsWith(str1, str2)
- str1 문자열이 str2로 시작되면 참 (true), 아니면 거짓 (false)
fn:endsWith(str1, str2)
- str1 문자열이 str2로 끝나면 참 (true), 아니면 거짓 (false)
fn:contains(str1, str2)
- str1에 str2 문자열 포함되어있으면 참 (true), 아니면 거짓 (false)
fn:containsIgnoreCase(str1, str2)
- str1에 str2 문자열 포함되어있으면 참 (true), 아니면 거짓 (false)
- 대소문자 무시
fn:trim(str)
fn:join(arr, str2)
- arr 배열의 각 요소 중간에 str2 문자열이 들어간 문자열 리턴
fn:escpaeXml(str)
- xml 마크업으로서 해석될 수 있는 문자를 이스케이프로 리턴