EL(Expression Language)

오늘도 코딩중!·2023년 3월 21일
0

JSP

목록 보기
1/1

EL

JSP의 표현식을 조금 더 효율적으로 간단히 작성할 수 있도록 고안된 표현 언어.

EL 표기 형식

${key}

EL의 특징

1.get이란 단어를 사용하지 않는다. (getparameter?)

사용하지 않는 이유

  • EL == 화면에 표현하는 언어
    ==출력용 언어(setting 불가능)
    ==set을 못하니까 get만 남은 상황
    ==get을 생략해도 무조건 get

2.EL은 null을 빈칸으로 처리한다.
null인변수>빈칸출력{ null인 변수 } ->빈칸 출력{ NullPointerException 발생 코드 } -> 빈칸 출력(예외 발생 x)

간단히 재현

Servlet을 사용하여 코드 작성.

  • html

  • Servlet

@WebServlet("/elTest")
public class ELTestServlet extends HttpServlet{

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/el/elTest.jsp");

dispatcher.forward(req,resp);
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/views/el/elResult.jsp");

dispatcher.forward(req, resp);
}

  • 여기서 중요한 점은 Dispatcher로 forward를 무조건 해주어야 한다는 것.
  • 경로를 설정할 때의 기준은 /webapp이다.


doPost에 추가하여
req.setAttribute("person",p)를 삽입.

경로인 WEB-INF/views/el에 elResult.jsp를 작성.

EL 작성

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

최상단에 들어가야할 구문.

결과

EL의 NULL표현 형식

  • EL은 값이 NULL이면 빈칸을 출력한다.

NULL 이거나 빈 리스트를 확인하기 위해서는 empty 속성을 사용하면 된다.

List list1 = new ArrayList()를 작성하였다고 쳤을때.

이것을 req.setAttribute("list1",list1)으로 가져와서
JSP쪽에서 ${empty list1}, ${list1 == null} ${list1 eq null} 등으로 파악가능.

  • EL의 NULL확인 속성으로 응용 가능 한 것은

    nq(not equal), eq, empty, ==, != 이다.

EL의 인덱스 값 읽어오기

  1. 향상된 for문과 같은 forEach문을 사용해서 읽어오기
  2. ${list1[인덱스 번호]}

파라미터 값 가져오기

  1. param

  2. paramValues

    param.파라미터이름
    • 파라미터이름에 해당하는 값을 하나 가져옴.
      - 만약 파라미터에 해당하는 값이 여러 개 일 경우, 단 하나의 값만 가져옴.
    paramValues.파라미터이름[인덱스번호]
    • 파라미터 이름에 해당하고, 인덱스번호에 해당하는 값을 가져옴.

EL 변수 표현

생성문 : <c:set var = "변수명" value = "변수값" scope="영역"/>

  • 영역의 종류

    • page
    • request
    • session
    • application

    영역의 우선순위

    page > request > session > application

삭제문 : <c:remove var="삭제할 변수명" scope="삭제할 영역"

EL 조건문 작성법

<c:choose> </c:choose> : 조건문의 컨테이너와 마찬가지.
-> 조건문을 감싸는 구문
<c:when test="el표현 조건문">true일때 나오는 문장</c:when>
-> if를 나타내는 태그
<c:otherwise>해당하는 문장
-> else를 나타내는 태그.

예시)

반복문 작성법

  • 일반 for + 추가 기능

    		- 속성
    		1) var : 현재 반복 횟수에 해당하는 변수 (int i)
    		2) begin : 반복 시 var 시작 값
    		3) end : 반복이 종료될 var 값
    		4) step : 반복 시 마다 var의 증가 값 (기본값 1)
    	
    		5) items : 반복 접근한 객체(배열, 컬렉션 객체)
    	
    		6) varStatus : 현재 반복 상태와 관련된 정보를 제공하는 변수 선언
    	
    			varStatus="변수명"
    			-> c:forEach 구문 내에서 "변수명"을 통해 원하는 값을 얻을 수 있다.
    	
    			* varStatus에서 제공되는 값
    			- current : 현재 반복 횟수(현재 var 값)
    			 		또는 현재 반복 접근 중인 객체(컬렉션/배열 요소)
    		 		
    			- index : 현재 인덱스값 반환 (0부터 시작)
    		
    			- count : 현재 몇바퀴째인지 반복 횟수 반환 (1부터 시작)
    		
    			- first : 첫 번째 반복이면 true, 아니면 false
    		
    			- last : 마지막 반복이면 true, 아니면 false

    예시)

업로드중..

profile
늦은만큼 코막고 달려!

0개의 댓글