JSP에서는 EL(Expression Language)과 JSTL(JSP Standard Tag Library)을 이용하여 JSP 파일에서 자바 코드를 완벽하게 제거할 수 있도록 지원한다.
EL의 기본 구문은 다음과 같이 다양한 데이터를 화면에 출력하거나 산술 연산, 비교 연산, 논리 연산의 결과를 화면에 출력할 수 있다.
<%@ page contentType="text/html; charset=UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL Example</title>
</head>
<body>
정수 : ${35 } <br> <!-- 정수: 35 -->
실수 : ${35.8 } <br> <!-- 실수 : 35.8 -->
문자열 : ${"SSAMZ" } <br> <!-- 문자열 : SSAMZ -->
+ 연산결과 : ${98 + 2 } <br> <!-- + 연산결과 : 100 -->
% 연산결과 : ${98 % 3 } <br> <!-- % 연산결과 : 2 -->
비교연산1 : ${48 == 48 } <br> <!-- 비교연산1 : true -->
비교연산2 : ${48 != 48 } <br> <!-- 비교연산2 : false -->
비교연산3 : ${48 > 45 } <br> <!-- 비교연산3 : true -->
비교연산4 : ${48 >= 45 } <br> <!-- 비교연산4 : true -->
비교연산5 : ${48 < 45 } <br> <!-- 비교연산5 : false -->
비교연산6 : ${48 <= 45 } <br> <!-- 비교연산6 : false -->
</body>
</html>
EL을 이용하면 JSP 내장 객체(request, session, application)에 저장된 다양한 정보를 자바 코드 없이 사용할 수 있다.
<%
String id = request.getParameter("id");
BoardVO board = (BoardVO) request.getAttribute("board");
List<BoardVO> boardList = (List) request.getAttribute("boardList");
%>
아이디 : <%= id %>
게시글 제목 : <%= board.getTitle() %>
첫 번째 게시글 정보 : <%= boardList[0].toString() %>
아이디: ${param.id }
게시글 제목 : ${requestScope.board.getTitle() } <!-- requestScope 생략 가능 -->
아이디 : ${boardList[0]} <!-- requestScope 생략함 -->
※ Scope를 생략하면 자동으로 가장 작은 범위인 request에서 해당 객체를 검색한다. request에 객체가 없으면 더 큰 session에서 검색하고, session에도 없다면 application을 순차적으로 검색한다.
JSTL은 JSP에서 제공하는 표준 태그로 JSTL을 사용하기 위해서는 반드시 JSP 상단에 하기와 같은 taglib 지시자를 선언해야 한다.

<@ taglib uri=“html://java.sun.com/jsp/jstl/core” prefix=“c” %>
~ 생략 ~
<c:if test="${user == null}"> <!-- session에 "user"객체가 없으면-->
<a href="insertUserView.do">회원가입</a>
<a href="loginView.do">로그인</a>
</c:if>
<c:if test="${user != null}"> <!-- session에 "user"객체가 있으면-->
<a href="insertBoardView.do">글등록</a>
<a href="loginout.do">로그아웃</a>
</c:if>
본 포스팅은 멀티캠퍼스의 멀티잇 백엔드 개발(Java)의 교육을 수강하고 작성되었습니다.