반응형
- 라이브러리로 자바 구문을 만들어 놓고 필요할 때마다 꺼내 쓰면 되기 때문에 유지보수에 편하다.
- JSP 페이지 내에서 자바 코드와 HTML 코드(태그 형태)가 섞여 있으면 가독성이 떨어진다.
- EL문과 JSTL문을 사용하면 HTML과 태그 형태로만 구성된 일관된 소스코드를 볼 수 있다.
1. EL문
- Expression Language
- 값을 간결하고 간편하게 출력(표현)할 수 있도록 해주는 언어
- EL 문은 ${} 안에 있는 변수는 필드를 찾아오는 게 아니라 getter를 찾아가는 것이다.
- 그래서 우리가 만드는 객체를 사용하고 싶으면 setter, getter로 해야 한다.
JSP(자바) | EL |
<%=name%> | ${name} |
* setAttribute를 할 수 있는 4가지
① pageContext : 현재 페이지
② request : 요청
③ session : 세션
④ application : 전체
- 연산자
- EL문에서 연산자를 문자열로 나타낼 수 있다.
- ${empty data} : data의 값이 없으면 ture
연산자 문자열 연산자 문자열 / div < lt % mod >= ge && and <= le || or == eq ! not != ne > gt empty 뒤에 오는 값이 비어있으면 true / 아니라면 false - 예시 1
- 자바 변수를 사용하기 위해서는 <%= %> 문을 사용할 수 밖에 없다.
- EL문은 변수를 찾는 것이 아니라 setAttribute로 한 키값을 찾으러 가는 것이다.
- 그래서 EL문을 사용하기 위해서는 setAttribute("키","값")을 사용해야 한다.
- 만약 키의 값이 중복 되어 들어간다면 찾는 attribute 순서는 다음과 같다.
pageContext > request > session > application
- 우리가 원하는 곳에서 찾기 위해서는 ${~~~~~Scope.키값} 으로 하면 된다. - 예시 2
- 위에서 보았듯이 attribute로 넘어왔으면 ${} 안에다가 키 값을 그냥 적으면 된다.
- parameter로 넘어온다면 EL문에서는 ${param.name}으로 하면 된다.
- checkbox처럼 배열로 값이 넘어오는 parameter는 ${paramValues.name[n]}으로 사용하면 된다.
- 쿠키를 사용하기 위해서는 배열을 선언해서 사용했지만 EL문을 사용하면 ${cookie.키값.value}로 하면 값을 쉽게 얻을 수 있다.
2. JSTL
- JSP Standard Tag Library
- 연산이나 조건문, 반복문을 편하게 처리할 수 있으며, JSP 페이지 내에서 자바 코드를 사용하지 않고 로직을 구현할 수 있는 효과적인 방법을 제공한다.
- JSTL은 EL문과 같이 사용
JSP(자바) | JSTL |
<% if(조건식) { %> <p>결과</p> <% } %> |
<c:if test="조건식"> <p>결과</p> <c:if> |
- 라이브러리 다운
https://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ > jakarta-taglibs-standard-1.1.2.zip 다운로드 > lib 안에 있는 jar파일 두 개 WEB-INF 안에 lib에 삽입
> 사용할 페이지에 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 작성
> 함수를 사용할 거면 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 작성
${fn:함수} 로 사용 : ex) ${fn:length(arData)} -> arData 길이 반환
- core 태그
변수세팅(attribute) <c:set var="key값(변수명)" value="세팅할값" scope="세팅할위치"/> 변수출력
(EL문으로 해도 되므로 거의 안씀)<c:out value="${변수명}"/> if문 <c:if test="${조건식}"></c:if> switch문 <c:choose></c:choose> case문 <c:when test="${조건식}"></c:when> default문 <c:otherwise></c:otherwise> for문(예시 참조) <c:forEach></c:forEach> - 예시 1(JSTL 변수)
- EL문에서 ${} 안에 것을 세팅하기 위해서는 setAttribute를 하면 된다.
- 하지만 JSTL의 <c:set var="키" value="값"> 으로 편하게 사용 가능하다.
- 내용을 반환하는 <c:out>이 있지만 EL문을 사용하면 되므로 거의 쓰지 않는다.
- <c:set>을 할 때 속성으로 scope="위치" 를 하게 되면 저장할 위치도 지정할 수 있다. - 예시 2(조건문)
- 조건문은 자바에서 처럼 여러가지로 나뉜다.
- <c:if test="조건문"> 내용 <c:if> 는 그냥 자바에서 if문 ~ if문을 의미한다.
- <c:choose></c:choose> 는 switch라고 생각하면 되고 그 안에는 <c:when>과 <c:otherwise>를 사용할 수 있다.
- <c:when>은 case문 또는 if ~ else if ~ else 라고 생각하면 된다.
- <c:otherwise>는 default 또는 else 라고 생각하면 된다. - 예시 3(반복문)
- 반복문도 역시 자바처럼 여러가지로 나뉜다.
- <c:forEach var="변수" begin="초기값" end="끝값" step="올라가는 수"> 내용 </c:forEach>로 사용할 수 있다.
- 보이는 대로 변수를 초기값부터 끝값까지 step에 따라 증가하는 것이다.(초기값 포함 끝값 포함 이다.)
- 위 예시 처럼 <c:set>을 배열로 세팅할 수 있는데, for문에서 끝값을 배열의 길이로 설정하는 경우가 많다.
- JSTL문에서 어떤 것의 길이를 구하기 위해서는 위에 fn에 대한 설정을 적어주고, fn을 사용하면 된다.
- ${fn:함수()} 로 사용하면 되는데, 다양한 함수들이 존재한다.
- 빠른 for문도 역시 사용할 수 있는데, <c:forEach var="변수" items="배열 또는 컬렉션"> 내용 </c:forEach>로 사용하면 된다.
- items에서 하나씩 변수로 넘어와 사용하면 된다.
- 마지막으로 HashMap도 빠른 for문으로 편하게 값을 반환할 수 있다.
- HashMap을 선언해 세팅해주고 빠른 for문을 사용하면 변수에 entry 형태로 넘어오게 되있다.
- 원래는 getkey, getvalue를 해야하지만 EL문은 필드명만 써도 알아서 getter를 찾아가므로 이렇게 entry.key, entey.value 를 사용해도 된다.
반응형
'웹개발 > JSP' 카테고리의 다른 글
[JSP] MVC Model, Front-Controller 패턴, Model2의 페이지 이동 방식 (0) | 2022.06.02 |
---|---|
[JSP] MyBatis (0) | 2022.05.27 |
[JSP] 회원가입 유효성 검사, 비밀번호(정규식) 검사 (0) | 2022.05.26 |
[JSP] 다양한 세션 이용 (0) | 2022.05.26 |
[JSP] DBCP(Database Connection Pool) (0) | 2022.05.25 |