JSP의 표현식을 조금 더 효율적으로 간단히 작성할 수 있도록 고안된 표현 언어.
${key}
1.get이란 단어를 사용하지 않는다. (getparameter?)
사용하지 않는 이유
2.EL은 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를 작성.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
최상단에 들어가야할 구문.
- 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, ==, != 이다.
param
paramValues
- 파라미터이름에 해당하는 값을 하나 가져옴.
- 만약 파라미터에 해당하는 값이 여러 개 일 경우, 단 하나의 값만 가져옴.
- 파라미터 이름에 해당하고, 인덱스번호에 해당하는 값을 가져옴.
생성문 : <c:set var = "변수명" value = "변수값" scope="영역"/>
영역의 종류
- page
- request
- session
- application
영역의 우선순위
page > request > session > application
삭제문 : <c:remove var="삭제할 변수명" scope="삭제할 영역"
<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
예시)