😀😀
# EL(Expression Language : 표현 언어)
- 표현 언어라고 함.
- 변수의 값을 출력할 때 사용하는 스크립트 언어.
- JSP 2.0 이후 버전부터 사용이 가능함.
- 자바 코드가 들어가는 표현식(<%= %>)을 좀 더
편리하게 사용하는 데이터 출력 기능임.
- 사용법이 간결하고, 예외와 형변환에 관대함.
예를 든다면 자바에서 값이 null인 변수를 사용하면 예외가 발생하지만
표현 언어를 사용하면 예외가 발생하지 않음.
- 자바 코드를 사용해야 했던 모든 곳에 표현 언어를 사용할 수 있음.
- 라이브러리 없이 사용이 가능함.
- 표현 언어의 특징
* 기존의 표현식보다 편리하게 값을 출력할 수 있음.
* 변수와 여러 가지 연산자를 포함할 수 있음.
* JSP 내장 객체에 저장된 속성도 표현 언어로 출력할 수 있음.
* 표현 언어 자체의 내장 객체도 지원이 됨.
* 산술 연산, 비교 연산, 논리 연산이 가능함.
- 표현 언어 형식
예) <%=변수 %> ==> ${변수 or 수식 }
- 표현 언어 연산자의 종류
* 산술연산자 : +, -, *, /(div), %(mod)
* 관계(비교)연산자
== or eq : 두 수의 값이 같은지 비교함.
!= or ne : 두 수의 값이 다른지 비교함.
>= or ge : 값(좌측)이 다른 값(우측)보다 크거나 같은지 비교함.
> or gt : 값(좌측)이 다른 값(우측)보다 큰지 비교함.
<= or le : 값(좌측)이 다른 값(우측)보다 작거나 같은지 비교함.
< or lt : 값(좌측)이 다른 값(우측)보다 작은지 비교함.
* 논리연산자
&& or and : 논리곱 연산을 함.
|| or or : 논리합 연산을 함.
! or not : 부정 연산을 함.
* empty 연산자
- 값이 null 이거나 빈 문자열이면 true 값을 반환함.
- 또한 List, Map 같은 저장 객체에 값(데이터)이 존재하는지
여부를 판단하는 연산자임.
- 표현 언어에서 제공하는 내장객체
* page
- 현재 페이지의 범위에만 한정됨. 페이지가 끝나면 값이 유효하지 않음.
* request(자주씀)
- request 생명 주기는 request 요청을 받고, 요청에 대한 처리를
완료하는 시점까지만 한정됨.
* session
- session의 생명 주기는 설정된 유효 시간이 기준이 됨.
* application
- 웹 사이트가 실행되는 동안만 유효하게 됨. 애플리케이션이 종료가
되면 유효하지 않게 됨.
* param
- 파라미터 값을 얻어올 때 사용됨.
* paramValues
- 파라미터 값을 배열로 얻어올 때 사용됨.
※ 내장 객체를 사용할 때는 map 자료 구조 형태로 key, value 값으로 저장.
setAttribute(String key, Object value)
getAttribute(String key)
😀
<%
pageContext.setAttribute("Su", su);
>%
${Su}
😀<%-- 숫자형 문자열과 숫자를 더하면 문자열을 자동으로 변환하여 더해줌 --%>
\${"20" + 55} >>> ${"20" + 55}<br>
😀 <%-- 피연산자가 null이면 0으로 처리가 됨
따라서 덧셈 연산이 진행됨 --%>
\${null + 45 } >>> ${null + 45 } <br>
# JSTL(JSP Standard Tag Library)
- JSP 페이지에서 스트립트릿(자바코드)과 HTML 코드가 뒤 섞이게 되는 현상이 발생함
- 이렇게 뒤섞인 코드는 알아보기가 쉽지 않게 되는 단점이 발생함.
따라서 가독성이 낮아짐
- JSP 페이지에서 스트립트릿에 들어가는 자바 코드중에 논리적인 판단, 반복처리, 포멧처리 등을
HTML 태그처럼 사용할 수 있도록 표준으로 만들어서 정의한 것이 JSTL 라이브러리임.
- JSTL을 사용하기 위해서는 라이브러리 파일이 필요함
* jstl.jar
* standard.jar
https://tomcat.apache.org/taglibs/standard/ -> Standard 1.1 (download) -> binaries/
-> jakarta-taglibs-standard-1.1.1.zip -> 압축푼후 lib -> 두 jar파일을 복사
-> (JSP)WebContent -> WEB-INF -> lib에 붙여넣기
<%--
기본적인 JSTL 태그 ==> 출력할 때는 EL 언어를 사용
1. 변수 선언 태그(set)
<c:set var="변수명" value="값"> </c:set>
예) <c:set var="su" value="10" />
==> int su = 10;
<c:set var="str" value="Hello" />
==> String str ="Hello";
2. 출력 태그(out)
<c:out value="변수명" />
예) <c:out value="str" />
3. 삭제 태그(remove)
<c:remove var="변수명" />
예) <c:remove var="str" />
4. 조건 처리 태그(if문) ==> else 문이 없음
<c:if test="조건문" var="변수명" />
5. 다중 조건 처리 태그(choose문) ==> switch~case문과 유사
<c:choose>
<c:when test="조건식1">
조건식1인 참인 경우 실행 문장 </c:when>
<c:when test="조건식2">
조건식2인 참인 경우 실행 문장 </c:when>
<c:when test="조건식3">
조건식3인 참인 경우 실행 문장 </c:when>
<c:when test="조건식4">
조건식4인 참인 경우 실행 문장 </c:when>
<c:otherwise>
상기 조건식 이외의 경우 실행 문장 </c:otherwise>
</c:choose>
6. 반복문(forEach문) ==> for문과 유사함
<c:forEach begin="시작값" end="마지막값"
step="증감값" var="변수명">
반복 실행 문장;
</c:forEach>
<c:forEach items="객체명" var="변수명"> ==>단축for문과 유사 (객체->배열)
7. 문자열을 잘라주는 태그 ==> StringTokenizer 클래스
<c:forTokens items="문자열" delims="문자열 구분자" var="변수명">
반복해서 문자열을 잘라주는 문장;
</c:forTokens>
--%>
<%--
포맷팅 라이브러리 종류
- <fmt:formatNumber> : 표시할 숫자의 형식을 지정하는 태그
- <fmt:timeZone> : 지정한 국가의 시간을 지정하는 태그
태그를 열고 닫는 영역에서만 적용이 됨
- <fmt:setTimeZone> : 지정한 국가의 시간을지정하는 태그
- <fmt:formatDate> : 지정한 형식의 날짜를 표시하는 태그
--%>
<%--
<fmt:formatNumber> 태그의 여러 가지 속성
- value : 출력의 형식을 지정함
- type : 출력될 타입을 지정함
* percent : %
* number : 숫자
* currency : 통화형식
- currencyCode : 통화코드를 지정함. 한국의 원화는 KRW임.
- currencySymbol : 통화를 표시할 때 사용할 기호를 표시함
- var : <fmt:formatNumber> 태그의 결과를 저장할 변수의 이름을 지정
- scope : 변수의 접근 범위를 지정함
- pattern : 숫자가 출력될 양식을 지정함
--%>
<%--
<fmt: formatDate> 태그의 여러 가지 속성
- value : 포멧팅될 날짜를 지정하는 속성
- type : 포맷팅할 타입을 지정하는 속성
* date : 날짜를 지정
* time : 시간을 지정
* both : 날짜 / 시간을 모두 지정
- dateStyle : 날짜의 출력 양식을 지정하는 속성
값에는 full, long, medium, short 등을 지정할 수 있음
- timeStyle : 시간 출력 양식을 지정하는 속성
- pattern : 직접 출력 양식을 지정하는 속성
- timeZone : 특정 나라 시간대로 설정하는 속성
--%>
'JSP' 카테고리의 다른 글
23.03.15 DBCP (0) | 2023.03.15 |
---|---|
23.03.07 (0) | 2023.03.07 |
23.03.06(get, post, servlet mapping) (0) | 2023.03.06 |
댓글