
JSP(JavaServer Pages)는 자바 기반의 웹 애플리케이션에서 동적인 웹 페이지를 생성하기 위해 사용되는 기술임. JSP는 HTML, CSS, JavaScript 등의 정적 콘텐츠와 자바 코드를 결합하여 동적 웹 페이지를 생성할 수 있게 해줌. JSP는 주로 서버 측에서 실행되며, 클라이언트(브라우저)는 최종적으로 JSP가 생성한 HTML 페이지를 받음.
JSP는 자바 서블릿을 확장한 형태로, 자바 코드를 HTML에 쉽게 포함할 수 있도록 설계되었음. JSP는 서블릿과 함께 사용되며, 복잡한 비즈니스 로직은 서블릿에서 처리하고, JSP는 주로 프레젠테이션 계층을 담당함.
JSP는 HTML 내에 자바 코드를 포함할 수 있는 서버 측 기술로, 주로 동적인 웹 페이지를 생성하는 데 사용됨.
JSP 파일은 .jsp 확장자를 가지며, 웹 서버에서 실행되면 서블릿으로 변환된 후 실행됨. 즉, JSP는 내부적으로 서블릿으로 컴파일되어 실행됨.
클라이언트는 최종적으로 HTML 페이지를 받기 때문에, JSP 페이지는 동적으로 생성된 HTML을 반환함.
JSP가 동작하는 과정은 다음과 같음
클라이언트 요청
JSP 처리
서블릿 실행
HTML 응답
클라이언트 표시
JSP에서는 자바 코드를 여러 방식으로 포함할 수 있음. 주로 사용하는 세 가지 스크립트 요소는 다음과 같음
<%= ... %> (Expression)
<h1>Welcome, <%= username %>!</h1>
<% ... %> (Scriptlet)
<%
String username = "John";
int age = 25;
%>
<p>User: <%= username %>, Age: <%= age %></p>
<%! ... %> (Declaration)
<%!
public String getGreeting(String name) {
return "Hello, " + name;
}
%>
<p><%= getGreeting("Alice") %></p>
JSP 디렉티브는 페이지의 속성이나 설정을 지정할 때 사용됨. 주로 세 가지 디렉티브가 있음
<%@ page ... %>
JSP 페이지의 전반적인 설정을 정의함.
예: 사용할 언어, 예외 처리, 인코딩 방식 등.
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ include ... %>
<%@ include file="header.jsp" %>
<%@ taglib ... %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
JSP는 액션 태그를 통해 자바 코드를 HTML과 함께 쉽게 사용할 수 있음. 주로 사용하는 액션 태그는 다음과 같음
<jsp:include>
<jsp:include page="header.jsp" />
<jsp:forward>
<jsp:forward page="nextPage.jsp" />
<jsp:param>
<jsp:include page="footer.jsp">
<jsp:param name="footerText" value="Thank you for visiting!" />
</jsp:include>
JSP에서는 HTML 주석과 JSP 주석을 구분할 수 있음.
HTML 주석
<!-- This is an HTML comment -->
JSP 주석
<%-- This is a JSP comment --%>
JSP는 본질적으로 서블릿의 상위 수준 추상화임. JSP는 HTML 중심의 개발을 쉽게 해주는 반면, 서블릿은 자바 코드 중심으로 작성됨. JSP는 웹 페이지의 프레젠테이션 로직에 더 초점을 맞추고, 서블릿은 비즈니스 로직과 요청 처리에 집중함.
JSP 파일은 최초 요청 시 서블릿으로 변환되어 실행됨.
개발자가 직접 HTML과 자바 코드를 혼합하여 동적인 웹 페이지를 생성할 수 있음.
JSP는 자바 코드뿐만 아니라 JSTL과 같은 태그 라이브러리를 통해 HTML에 쉽게 로직을 추가할 수 있음.
쉽고 간결한 코드 작성
JSP는 HTML에 자바 코드를 쉽게 포함할 수 있으므로, 동적 페이지 생성이 쉬움.
자바 코드와 HTML을 한 파일에서 처리할 수 있어, 웹 페이지의 비즈니스 로직과 프레젠테이션 로직을 결합할 수 있음.
재사용성
JSP는 <jsp:include>와 같은 태그를 통해 코드의 중복을 줄일 수 있음. 헤더, 푸터 등 공통 요소를 다른 JSP 페이지에 포함시켜 재사용 가능함.
MVC 패턴 구현
JSP는 서블릿과 함께 MVC(Model-View-Controller) 패턴을 쉽게 구현할 수 있음. 서블릿은 컨트롤러 역할을 하며, JSP는 뷰(View) 역할을 담당하여 비즈니스 로직과 프레젠테이션 로직을 분리함.
JSTL과 커스텀 태그
JSP는 JSTL(JavaServer Pages Standard Tag Library)을 지원하여, 반복문, 조건문 등을 쉽게 처리할 수 있음.
개발자는 자신만의 커스텀 태그를 정의하여 JSP 페이지에서 사용할 수 있음.
성능:
JSP 페이지는 최초 요청 시 서블릿으로 컴파일되기 때문에, 이후 요청부터는 서블릿처럼 빠르게 처리됨.
JSTL은 JSP에서 자주 사용하는 로직을 쉽게 처리할 수 있도록 돕는 표준 태그 라이브러리임. 예를 들어 조건문, 반복문, 포매팅, 국제화(i18n) 등의 작업을 태그를 통해 쉽게 처리할 수 있음.
조건문
<c:if test="${user.age > 18}">
<p>Adult</p>
</c:if>
반복문
<c:forEach var="item" items="${itemsList}">
<p>${item.name}</p>
</c:forEach>
복잡한 비즈니스 로직
유지보수 어려움
초기 로드 시간
JSP는 자바 기반의 웹 애플리케이션에서 동적 웹 페이지를 생성하기 위한 강력한 기술임.
JSP는 자바 코드를 HTML 내에 쉽게 포함할 수 있도록 하여, 서버 측에서 동적으로 콘텐츠를 생성하고 클라이언트에게 전달할 수 있음.
서블릿과 함께 사용하여 MVC 패턴을 구현하면, 비즈니스 로직과 프레젠테이션 로직을 분리하여 코드의 유지보수를 용이하게 할 수 있음.