JSP
기본 정보
- 이름: JSP (JavaServer Pages)
- 분류: 서버 사이드 웹 기술
- 개발사: Sun Microsystems (현재 Eclipse Foundation/Jakarta EE)
- 최초 공개: 1999년
- 실행 환경: Servlet Container (Tomcat 등)
- 주요 용도: 동적 웹페이지 생성
- 관련 주제: #JSP #Java #Servlet #백엔드 #웹개발
개요
JSP(JavaServer Pages)는 Java 기반의 서버 사이드 웹 기술로, HTML 문서 안에 Java 코드를 삽입하여 동적인 웹페이지를 생성할 수 있도록 설계되었다.
클라이언트가 JSP를 요청하면 웹 서버는 JSP를 Servlet으로 변환하고 컴파일한 후 실행하여 결과 HTML을 브라우저에 전달한다.
과거 Java 웹 개발의 표준 기술 중 하나였으며, 현재는 Spring Boot + Thymeleaf, React, Vue.js 등의 사용이 증가하면서 신규 프로젝트에서는 사용 비중이 감소하는 추세이다.
주요 특징
- Java 기반
- Servlet으로 변환 후 실행
- HTML과 Java 코드 혼합 가능
- MVC 패턴 적용 가능
- EL(Expression Language) 지원
- JSTL 지원
- Tomcat 등 Servlet Container에서 실행
실행 구조
브라우저
↓
JSP 요청
↓
Tomcat
↓
Servlet 변환
↓
Java 컴파일
↓
실행
↓
HTML 생성
↓
브라우저 출력
기본 예제
<%@ page language="java" %>
<html>
<body>
<h1>Hello JSP</h1>
</body>
</html>
JSP 선언문
<%!
int count = 0;
%>
클래스의 멤버 변수나 메서드를 선언할 때 사용한다.
스크립틀릿
<%
String name = "구름";
out.println(name);
%>
Java 코드를 직접 작성할 수 있지만, 현재는 사용을 지양하는 것이 일반적이다.
표현식
<%= name %>
값을 화면에 출력할 때 사용한다.
EL(Expression Language)
${user.name}
${user.age}
객체의 값을 간결하게 출력할 수 있으며, 현대 JSP 개발에서는 EL 사용이 권장된다.
JSTL
<c:forEach items="${list}" var="item">
${item.name}
</c:forEach>
JSTL(JavaServer Pages Standard Tag Library)은 반복문과 조건문 등을 태그 형태로 제공한다.
Include
<%@ include file="header.jsp" %>
공통 레이아웃을 분리할 때 사용한다.
페이지 지시어
<%@ page
contentType="text/html;charset=UTF-8"
language="java"
%>
JSP 페이지의 기본 정보를 설정한다.
Form 처리
<form action="save.jsp" method="post">
<input type="text" name="name">
<input type="submit">
</form>
파라미터 받기
String name = request.getParameter("name");
HTTP 요청 데이터를 가져올 수 있다.
Session
session.setAttribute("id","admin");
String id =
(String)session.getAttribute("id");
로그인 상태 유지 등에 사용된다.
Cookie
Cookie cookie =
new Cookie("user","cloud");
response.addCookie(cookie);
클라이언트 브라우저에 데이터를 저장할 수 있다.
MVC 패턴
View
↓
JSP
↓
Controller
↓
Servlet / Spring
↓
Model
↓
Database
실무에서는 JSP를 View 역할로만 사용하는 것이 일반적이다.
JSP와 Servlet 차이
| JSP | Servlet |
|---|---|
| HTML 중심 | Java 코드 중심 |
| View 작성에 적합 | Controller 작성에 적합 |
| 자동 Servlet 변환 | 직접 Java 클래스 작성 |
| UI 개발에 편리 | 로직 구현에 적합 |
주요 활용 분야
- 관리자 페이지
- 사내 ERP
- 그룹웨어
- 공공기관 시스템
- 레거시 Java 웹 프로젝트
- 전자정부 프레임워크 기반 시스템
장점
- Java와 높은 호환성
- Servlet 기반으로 안정적
- HTML 작성이 쉬움
- JSTL 및 EL 지원
- 기업 시스템에서 많이 사용됨
단점
- Java 코드와 HTML 혼합 시 유지보수가 어려움
- 최신 프론트엔드 프레임워크 대비 생산성이 낮음
- 신규 프로젝트에서는 사용 빈도가 감소하는 추세
- 스크립틀릿 사용 시 코드 가독성이 떨어짐
실무 메모
실무에서는 다음과 같은 방식이 권장된다.
- 스크립틀릿(
<% %>) 사용 지양 - EL(Expression Language) 사용
- JSTL 적극 활용
- MVC 패턴 적용
- JSP는 View 전용으로 사용
- 비즈니스 로직은 Service 계층에서 처리
- UTF-8 문자셋 적용
- 공통 레이아웃은 include로 분리
- Spring MVC와 함께 사용 시 View Resolver 활용
JSP와 함께 사용하는 기술
대표 WAS(Web Application Server)
- Apache Tomcat
- Apache TomEE
- JBoss
- GlassFish
- WebLogic
- WebSphere
관련 문서
출처
- Jakarta Pages 공식 문서
- Apache Tomcat 공식 문서
- 위키백과 「JavaServer Pages」