[JSP/Servlet] EL과 JSTL 은 무엇인가?
EL (Expression Language) 란 화면에 뿌려줄 데이터를 말한다. 출력을 간소화 시키기위해서 사용하는 구문이다.
EL의 형태는 ${값}으로 사용하는데 다른 표현식보다는 짧고, 간결하다.
EL의 특징
- 나눗셈이 일반적으로 나온다.
- 단어형 연산이 지원 -> div mod, eq, ne, gt, empty
- 변수 생성 가능하다
- 객체 생성이 어렵다.
- 값이 null인 경우 화면에 출력하지 않는다.
EL은 param이라는 내장 객체를 이용해서 파라미터에 쉽게 접근 할 수 있다.
기존방식 : key = <%request.getParameter("key") %>
EL : key = ${param.key}
기존방식: <%= request.getParameter("key").equals("mykey")%>
EL: ${param.key =='mykey'}
EL에서는 파라미터외에 여러 저장소를 접근할 수 있는 내장객체가 존재한다
- pageContext -> pageScope
- request -> requestScope
- session -> sessionScope
- application -> applicationScope
추가적으로 EL은 추론 기능을 제공한다.
예를 들면 ${a.name}은 ${a.getName()}으로 추론되어서 돌아간다.
JSTL
JSTL (Java standard tag library)란 태그를 사용한 JSP페이지에서 루틴 프로그램이다
JSP태그를 라이브러리 형태로 모든 프로그래머가 공통으로 사용하도록 모아둔것을 말한다.
종류는 총 5가지가 있다. core, format, function, sql, xml
-> core, format이 주로 쓰인다.
JSTL을 사용하기 위해서는 JSTL라이브러리 jar이 필요하다 또한 사용할 태그의 모듈을 페이지에 명시해야한다.
<%@ taglib prefix ="이름" uri="uri 주소" %> ->이런식으로 명시한 후 사용한다.
<%-- core 태그 모듈 사용 설정 --%>
<%@ taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core" %>
core 태그의 기능은
- 변수생성, 호출, 제거
- 조건 구문
- 반복 구문
- 예외 처리
- 주소 설정
<core:set var="a" value="10"></core:set>
<h1>a = ${a}</h1>
<core:set var="a" value="${a+5}"></core:set>
<h1>a = ${a}</h1>
<core:set var="a" value="hello"></core:set>
<h1>a = ${a}</h1>
<core:remove var="a"/>
<h1>a = ${a}</h1>
이런식으로 출력된다.
<core:if>를 이용하여서 단독 조건을 구현할 수 있다.
<core:choose>를 이용하여 그룹 조건을 구현할 수 있다.
<h1>부자 테스트</h1>
<form action="richtest.jsp" method="get">
<input type="text" name="money" placeholder="input your worthnet" value="${param.money}">
<input type="submit" value="확인">
</form>
<!-- 단독 -->
<core:if test="${param.money >= 100000}">
<h2>you are rich!</h2>
</core:if>
<core:if test="${param.money < 100000}">
<h2>you are not rich!</h2>
</core:if>
<!-- 그룹 -->
<core:choose>
<core:when test="${empty param.money}">
<!--do nothing -->
</core:when>
<core:when test="${param.money >= 100000}">
<h2>you are rich!</h2>
</core:when>
<core:otherwise>
<h2>you are not rich!</h2>
</core:otherwise>
</core:choose>