JSP
- HTML 코드 안에서 스크립트 형태로 자바 언어를 사용하여 동적인 페이지를 구현한다.
- 서블릿의 비즈니스 로직으로부터 화면 로직을 분리하는 것으르 목표로 한다.
실행 과정
- 웹 컨테이너는 클라이언트로부터의 요청이 JSP에 대한 요청일 경우 먼저 JSP 파일을 자바 코드(서블릿)로 변환한다.
- 변환된 자바 코드(서블릿)를 컴파일하고 서블릿 인스턴스를 생성한다.
- 서블릿 인스턴스가 생성되면 서블릿의 라이플 사이클을 거치면서 클라이언트의 요청을 처리해준다.
특징
- 대부분의 운영체제에서 사용이 가능하다.
- 서버 자원을 효율적으로 사용한다.(요청을 스레드 단위로 처리)
- MVC 패턴을 쉽게 적용할 수 있다.
- JSP 파일의 배포 위치는 HTML 파일과 동일하다.
스크립팅 요소
- <% 로 시작해서 %>로 끝나는 것이 특징이다.
주석 태그
지시자 태그
page 지시자
- JSP 페이지에 대한 속성을 지정한다.
- JSP 파일 어느 위치에 와도 상관없으나 가장 첫 부분에 작성한다.
<%@ page import="java.io.*"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page isErrorPage="true" %> *
<%@ page errorPage="/error/errorForm.jsp" %>
include 지시자
- 다른 페이지(JSP, HTML)를 포함할 때 사용하는 지시자이다.
<%@ include file="footer.html" %>
taglib 지시자
- JSP에서 사용할 태그 라이브러리를 지정한다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
선언문 태그
- 서블릿 클래스의 필드와 메소드를 선언할 때 사용한다.
- <%! %>
<%! public static final String DEFAULT_NAME = "홍길동"; %>
<%! int counter = 0; %>
<%!
public String getName(HttpServletRequest request){
return request.getParameter("name");
}
%>
스크립트릿(Scriptlet) 태그
- _jspService() 메소드의 지역 변수와 자바 코드를 작성할 때 사용한다.
<% int i = 10; %>
<% if(i > 10) { %>
...
<% } else { %>
...
<% } %>
표현식 태그
- 서블릿 코드에서 out.print()의 역할 수행하는 태그로 클라이언트로 데이터를 출력하는 코드를 작성할 때 사용한다.
- <%= %>
현재 시간은 <%= new java.util.Date() %> 입니다.
내장 객체
- JSP에서 기본적으로 제공하는 객체들로 request, response, out 등 스크립트릿 태그와 표현식 태그에서 사용할 수 있게 선언된 객체이다.

내장 객체 영역
- Page < Request < Session < Application 영역 순으로 범위가 넓다.

JSP 실습
https://github.com/mjms0214/BEYOND_SW_CAMP_8/tree/main/servlet-jsp/02_JSP
EL/JSTL
EL(Expression Language)
- JSP 2.0버전에서 추가된 표현 언어이다.
- 표현식(Expression) 태그를 대신하여 클라이언트에 출력하고자 하는 값들은 좀 더 간결하게 사용하는 방법이다.
<%= request.getParameter("name") %>
${ param.name }
내장 객체

EL 실습
https://github.com/mjms0214/BEYOND_SW_CAMP_8/tree/main/servlet-jsp/03_EL_JSTL/src/main/webapp/views/el
JSP 액션 태그
- JSP 페이지에서 자바 코드를 직접 입력하지 않고 특정 작업을 수행하는데 사용하는 태그이다.
- 액션 태그의 경우 웹 브라우저에서 실행되는 것이 아니라 웹 컨테이너에서 실행된다.
표준 액션 태그
- JSP에서 기본으로 제공하는 액션 태그로 별도의 라이브러리 설치 없이 바로 사용할 수 있다.

jsp:include 태그
- include 액션 태그는 다른 페이지를 포함 시킬 때 사용하는 액션 태그이다.
- include 지시자와 다르게 include 액션 태그는 런타임 시에 포함된다.
<jsp:include page="포함할 페이지" />
jsp:forward 태그
- forward 액션 태그는 다른 페이지로 요청을 전달할 때 사용하는 액션 태그이다.
- 요청을 전달하는 페이지에서 request, response 객체가 함께 전달되며 URL은 변경되지 않는다.
<jsp:forward page="이동할 페이지" />
JSTL(JSP Standard Tag Library)
- JSP에서 사용하는 커스텀 태그이다.
- JSP 페이지에서 자주 사용하는 코드들을 사용하기 쉽게 태그로 만들어 표준으로 제공한다.
등록
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
JSTL 태그 종류

JSTL 실습
https://github.com/mjms0214/BEYOND_SW_CAMP_8/tree/main/servlet-jsp/03_EL_JSTL/src/main/webapp/views/jstl