- JSP
- JSP(JavaServer Pages)는 HTML 문서에 Java 코드를 삽입하여 동적인 웹 페이지를 생성하는 서버 측 스크립트 언어이다.
- JSP는 클라이언트 요청 시 내부적으로 서블릿(Java 코드)으로 변환되어 실행된 후 HTML을 생성해 응답
- 쉽게 말해 HTML 문서에 Java 코드를 삽입하여 동적인 웹 페이지를 생성하는 서버 측 스크립트 언어
예시)
// hello.jsp
<% @ page contentType="text/html: charset=UTF-8"%>
<html>
<head>
<body>
<h2>Hello, JSP!</h2>
</body>
</html>
- 특징 및 구성
| 항목 | 설명 |
| 실행 구조 | JSP 파일은 .jsp확장자를 사용하며, WAS(Web Application Server)가 내부적으로 Servlet으로 변환하여 실행 |
| 파일 확장자 | .jsp |
| HTML과 Java 결합 방식 | <%= 변수 %> 또는 <% Java 코드 %>로 HTML 내에서 Java 코드 삽입 |
| 대표 문법 | <%= %>(출력), <% %>(로직), ${}(EL - Expression Language, JSP 2.0 이후) |

- Servlet
- Servlet은 자바 코드로 작성된 서버 측 프로그램으로, 클라이언트의 요청을 받아 처리하고 동적인 응답을 생성하는 웹 컴포넌트이다.
위의 우측 하단 자바 코드 과정을 제외한 나머지 내용들이 나와있는 개념이라고 이해하면 됨
- Servlet은 자바 코드로 작성된 서버 측 프로그램으로, 클라이언트의 요청을 받아 처리하고 동적인 응답을 생성하는 웹 컴포넌트이다.
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
//요청처리 및 응답 작성
}
}
| 구성 요소 | 설명 |
| @WebServlet | URL 매핑 설정 (/hello 등) |
| HttpServlet | 서블릿은 이 클래스를 상속 |
| doGet() | GET 요청 처리 메서드 |
| doPost() | POST 요청 처리 메서드 |
- doGet()은 URL에 데이터를 담아 조회용으로 사용하고,
doPost()는 본문에 데이터를 담아 데이터 입력에 사용된다.
| 항목 | Get | doPost() |
| 데이터 전송 방식 | URL에 쿼리스트링으로 전송 (?name=value) | HTTP Body에 담아 전송 |
| URL 노출 | O (브라우저 주소창에 보임) | X (보이지 않음) |
| 전송 데이터 길이 | 제한 있음 (일반적으로 2048자 이하) | 제한 없음 (더 많은 데이터 전송 가능) |
| 보안성 | 낮음 (URL에 노출됨) | 상대적으로 높음 |
| 용도 | 단순 조회, 검색 | 로그인, 폼 제출 등 민감 데이터 처리 |
| 브라우저 캐시 | 캐시됨 (뒤로 가기 시 데이터 유지) | 캐시되지 않음 |
JSP vs Servlet 비교 정리
| 항목 | JSP | Servlet |
| 정의 | HTML 안에 Java 코드를 삽입한 서버 측 스크립트 | Java 코드로 작성된 서버 측 프로그램으로 웹 요청을 처리 |
| 역할 중심 | 화면 출력(View 역할에 적합) | 로직 처리(Controller 역할에 적합) |
| 작성 방식 | HTML 코드 안에 Java 코드 | Java 코드 안에 HTML |
| 사용 목적 | 화면에 데이터를 출력, 응답 HTML 생성 | 요청 처리, DB 접근, 비즈니스 로직 수행 |
| 표준 위치 | JSP 표준 태그 라이브러리 (JSTL 포함) | Java Servlet API (javax.servlet) |
| 기능 차이 | Servlet의 기능 포함 + 표현 기능 강화 | 웹 요청을 동적으로 처리 가능 |
| 수정 및 배포 | 수정 시 WAS가 자동 처리 (재배포 불필요) | 코드를 수정하면 다시 컴파일 후 재배포 필요 |
| 초기 목적 | HTML 중심의 View 생성을 위한 보완 기술 | 동적 요청 처리를 위한 Java 기반 웹 컴포넌트 |
| 추천 사용 예 | 사용자에게 보여지는 HTML 응답 페이지 생성 | 로그인 처리, DB 조회, 로직 연산 등 |
'JAVA' 카테고리의 다른 글
| JAVA 객체지향 개념 정리 (1) | 2025.09.16 |
|---|---|
| JAVA 문법 규칙 및 GitHub 커밋 컨벤션 학습 (0) | 2025.09.15 |
| Thymleaf (0) | 2025.09.05 |
| Java 문법 기초 (1) | 2025.09.05 |
| Java란 무엇인가? (9) | 2025.08.14 |