Woopii Vyeolog

el태그, Jstl 본문

Spring Framework

el태그, Jstl

WooPii 2020. 3. 18. 15:24

EL태그

EL(Expression Language)태그는 해석 그대로 표현언어이다.

 

속성 값들을 편리하게 출력하기 위해서 제공된 언어이다.

 

jsp에서 <%= >의 scriptlet 방식이나, out.println() 과 같은 자바코드를 

 

더 이상 사용하지 않고 좀 더 간편하게 출력을 지원하기 위한 도구이다.

 

1. Attribute 형식에서는 '${Attribute이름}' 이렇게 쓴다

 

해당 attribute이름을 찾을 때 작은 Scope에서 큰 Scope로 찾는다.

(page → request → session → application)

(page : 생성된 페이지 내에서 찾음)

(request : 요청된 페이지 내에서 찾음)

(session : 웹 브라우저의 생명주기와 동일)

(application : 웹 어플리케이션의 생명주기와 동일)

 

attribute란?

메소드를 통해 저장되고 관리되는 데이터

setAttribute("key", value) → 값을 넣는다.
getAttribute("key") → 값을 가져온다.
removeAttribue("key") → 값을 지운다.

ex)setAttibute("id","abc"); 하면
${id}의 값은 'abc' 가 된다.

 

2. 만약 parameter가 있어서 그 값을 가져오려면 (parameter형식)

 

'${param.파라메터 이름}' 이렇게 적어준다. 

 

ex) 예를 들어 /test.jsp?id='abc' 라고 url이 있으면

test.jsp에서 ${param.id}는 'abc'라는 값이 나온다.

 

<EL표기법에서 자주 사용될 수  있는 객체>

EL태그에서 내장 객체를 제공하기 때문에 각 객체 Scope에 접근할 수 있다.

내장 객체 설명
pageScope page Scope에 접근하기 위한 객체 
requestScope request Scope에 접근하기 위한 객체
sessionScope session Scope에 접근하기 위한 객체 
applicationScope application Scope에 접근하기 위한 객체
param parameter 값을 가져오기 위한 객체
header header 값을 가져오기 위한 객체
cookie cookie 값을 가져오기 위한 객체
initParam JSP 초기 파라미터를 가져오기 위한 객체
pageContext pageContext 객체에 접근하기 위한 객체

 

JSTL(JSP Standard Tag Library)

JSP 코드를 관리하는 라이브러리로서, JSP의 가독성이 좋아진다. 

 

JSTL태그를 통해서 if문, for문, DB 등을 편하게 처리 할 수 있다. 

 

JSTL은 라이브러리이기 때문에 다운해서 사용해야한다. 

(다운로드 링크 : http://tomcat.apache.org/taglibs/standard/)

 

그리고 JSP페이지 맨위에 사용하고 싶은 태그를 다음과 같이 적어줘야 사용이 가능하다. 

(사용하고자 하는 것만 가져오면 된다.)

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

 

예를 들어) 조건문이나 반복문, 출력문의 경우 JSTL의 c태그(core)에 그 기능이 있는데

사용하기 위해선 JSTL을 다운로드 하고 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>를 jsp 파일 맨 위에 적은 다음에 구분에 맞게 사용하면 된다. 

 

<태그의 종류>

1. Core

일반 프로그래밍에서 제공하는 것과 유사한 기능(변수선언, 출력, 조건문, 반복문 등)

실행 흐름의 제어 기능을 제공

페이지 이동 기능 제공

가져올 URI :  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

 

2. Formatting

숫자, 날짜, 시간을 포매팅하는 기능을 제공

국제화, 다국어 지원 기능을 제공

가져올 URI :  <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

 

3. DataBase

DB의 데이터를 입력, 수정, 삭제, 조회하는 기능을 제공 

가져올 URI :  <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>

 

4. XML

XML문서를 처리 할 때 필요한 기능 제공

가져올 URI :  <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x"%>

 

5. Function 

문자열을 제공하는 함수 제공 

가져올 URI :  <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

 

 

<!-- 3번째 줄에 isELIgnored="false" 를 넣으면 EL을 사용할 수 있게 된다.  --> 
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR" isELIgnored="false"%>
    
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>테스트</title>
</head>
<body> 
</body>
</html>

 

 

JSTL 태그들 

 

1. <c:set var="변수이름" value="변수 값" scope="영역"> (변수 선언)

자바의 int num = 10; 를

<c:set var="num" value="100">으로 써서 변수 선언 할 수 있다. 

영역은 생략 가능 

 

2. <c:out value="출력할 값" default="value가 null일 때 출력할 값">(출력)

자바의 System.out.println("12345"); 를

<c:out value="12345"> 로 표현 할 수 있다. '12345'가 출력된다. 

 

3. <c:remove var="변수명" scope="영역">(변수명을 지움)

해당 영역의 변수명을 지운다. 영역을 생략하면 전체 영역에서 변수가 삭제됨

 

4. <c:if test="조건식" var="조건 결과(true,false)를 저장할 변수" scope="영역">(else가 없고 if만 있는 간단 조건식)

if만 있는 조건식이다. 

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>

<html>
   <head>
      <title><c:if> Tag Example</title>
   </head>

   <body>
      <c:set var = "salary" scope = "session" value = "${2000*2}"/>
      <c:if test = "${salary > 2000}">
         <p>My salary is:  <c:out value = "${salary}"/><p>
      </c:if>
   </body>
</html>
My salary is: 4000

 

5. <c:choose> , <c:when> , <c:otherwise> (if-else 다수의 조건문을 걸 때 사용)

 

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>

<html>
   <head>
      <title><c:choose> Tag Example</title>
   </head>

   <body>
      <c:choose>
      	<!-- ${empty list} : list에 값이 있는지 없는지 확인하는 태그 --> 
          <c:when test="${empty list }">
              등록된 글이 없습니다.    
          </c:when>
          <c:when test="${abc}">
              안녕하세요    
          </c:when>
          <c:otherwise>
              <c:set var="doneLoop" value="false" />
          </c:otherwise>
      </c:choose>
   </body>
</html>
Your salary is : 4000
Salary is very good. 

 

6. <c:forEach>(반복문)

Java에서의 for문과 같다. 변수명, 시작 index, 종료 index, 증가할 반복수 등 설정할 수 있다.

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>

<html>
   <head>
      <title><c:forEach> Tag Example</title>
   </head>

   <body>
      <c:forEach var = "i" begin = "1" end = "5" step = "1">
         Item <c:out value = "${i}"/><p>
      </c:forEach>
   </body>
</html>
Item 1
Item 2
Item 3
Item 4
Item 5

 

이 이외에도 많이 있지만 다 적을 수는 없으니 

 

전체 정리가 되 있는 사이트를 링크한다.

(https://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm)

 

 


출처 & 참고

https://hunit.tistory.com/203

 

Jsp〃[EL]과 [JSTL] 한방에 정리 + Core

JSP파일에 자바형식의 코드를 사용하면 불편한 점을 한방에 해결할 수 있는 EL (Expression Language) 과 JSTL (Jsp Standard Tag Library)를 이용해 코드를 간결하게 사용하는 방법에 대해 포스팅하도록 하겠습..

hunit.tistory.com

https://victorydntmd.tistory.com/156

 

[JSP/JSTL] JSTL과 EL

1. EL ( Expression Language ) EL은 JSP의 출력 문법을 대체하는 표현 언어입니다. <%= i %> JSP에서의 값 표기법이며, i는 변수입니다. ${ i } EL에서의 값 표기법이며, i는 이름입니다. 객체 Scope에서 애트리..

victorydntmd.tistory.com

 

Comments