- 코딩 공부/JSP Servlet

[JSP/Servlet] EL과 JSTL 은 무엇인가?

방개입니다 2021. 2. 17. 15:28

 

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>