JSP(Jakarta Server Pages)

✒️ 2025-06-21 23:00 내용 수정


JSP

HTML 내에 Java 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하고 웹 브라우저에 돌려주는 서버 사이드 스크립트 언어

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  

<!DOCTYPE html>  
<html>  
<head>  
    <meta charset="UTF-8">  
    <title>JSP Test</title>  
</head>  
<body>
<% String name = "Tester"; %>
	<h1>JSP Test</h1>  
	<p>Hello, <%= name %>!</p>
</body>  
</html>

동작

  1. 클라이언트에서 서비스를 request 하면 JSP가 실행된다.
  2. 웹 어플리케이션 서버의 Servlet Container(HttpJspBase)에서 JSP를 Servlet 코드로 변환(.java)한다.
  3. Servlet 코드는 컴파일(.class)된 후 실행되어 request에 대한 response를 HTML 형태로 클라이언트에게 돌려준다.

jsp_request_response.png


JSP 프로젝트 구조

mywebapp/                 ← 프로젝트 루트 (컨텍스트 경로)
├── index.html            ← 웹앱 기본 페이지, 외부에서 직접 접근 가능
├── css/, js/, images/    ← 정적 리소스
├── WEB-INF/              ← 보안 폴더, 브라우저에서 직접 접근 불가능
│   ├── web.xml           ← 서블릿/필터/리스너 설정
│   ├── classes/          ← 컴파일된 .class 파일
│   └── lib/              ← 외부 JAR 라이브러리 의존성
│   └── views/            ← JSP 화면 파일 (컨트롤러를 통해 포워드)
│       ├── error.jsp
│       └── editBook.jsp
└── META-INF/             ← 매니페스트 및 메타 정보 (WAR 패키징용

WEB-INF 디렉터리

  1. web.xml : 웹 서버와 Servlet Container에 대한 정보를 저장한 파일이다.
    • Servlet, Filter, Listener, URL Mapping 등을 설정한다.
  2. classes/ : 컴파일된 Java 클래스를 저장한 디렉터리다.
  3. lib/ : 외부 라이브러리 파일을 저장하는 디렉터리다.
  4. views/ : JSP 파일을 저장하는 디렉터리로, Controller를 통해서만 접근할 JSP 파일은 이 위치에 저장한다.