이번 글에서는 JSP와 Servlet에 대해서
정리해보려고 합니다.
사실 지금까지는 기본적인 HTML과 CSS를
사용해서 껍질만 만들었던 느낌이라면
MVC구조로 JSP, Database를 활용하면서
정말 속까지 채워가는 프로젝트를 하는
기분이었습니다.
그래서 이번 프로젝트에 핵심이 되었던
JSP에 대해서 정리해보려고 합니다.
서블릿 Servlet
먼저 JSP와 연관이 있는 Servlet의 개념에
대해서 알아보겠습니다.
Servlet은 자바로 작성된 서버 측 프로그램을
말합니다.
Servlet은 브라우저의 HTTP 요청(request)을
받아 자바 코드로 처리한 후 결과를
HTTP 응답(request) 형태로 돌려줍니다.
그래서 브라우저에서 사용자가 버튼을 누르거나,
폼을 제출하는 등의 동작을 하면 그 요청을
받아서 처리하는 컨트롤러의 역할을 합니다.
JSP도 파일 내에 Java 코드를 가지고 있기 때문에
실행하면 Servlet으로 변환되어 서버에서 처리됩니다.
JSP의 동작 과정은 다음과 같습니다.
1. 사용자의 JSP 파일 요청
2. 웹서버가 JSP를 Servlet으로 변환
3. Servlet으로 변환된 .java파일이 .class로 컴파일
4. 컴파일된 Servlet 클래스가 실행되어
HTML 결과를 브라우저에 전달
이 동작과정을 거쳐서 JSP파일이 실행됩니다.
따라서 JSP는 처음 요청이 들어와서 변환된 후에는
Servlet으로 캐싱이 되어 빠르게 실행됩니다.
또한 JSP에 로직을 많이 담게 되면 Servlet 코드가
복잡해지고 느려지기 때문에 MVC 패턴으로 코드를
분리하는 것이 유리하다는 것을 알 수 있습니다.
JSP(JavaServer Pages)
그럼 다음으로 JSP에 대해서 알아보겠습니다.
JSP는 JavaServer Pages의 줄임말로
서버 측에서 실행되는 스크립트 언어입니다.
아래와 같이 HTML 문서 안에 Java 코드를
삽입할 수 있다는 특징을 가지고 있습니다.
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<html>
<head>
<title>JSP 예시</title>
</head>
<body>
<h1>현재 시간: <% new java.util.Date() %> </h1>
</body>
</html>
위와 같이 HTML 문서 안에 Java의 코드를
사용할 수 있습니다.
그럼 많이 사용하는 문법을 정리해 보겠습니다.
1. <%= ... %> : 표현식 (결괏값 출력)
ex) <%= "hello world" %>
2. <% ... %> : 일반 Java 코드 실행
ex) <% int a = 5 %>
3. <%! ... %> : 선언(메소드/변수 선언)
ex) <%! int count = 0; %>
4. <%@ page ... %> : 설정 지정
ex) <%@ page language="java" %>
이번 프로젝트에서 가장 많이 사용한
JSP의 기능은
파라미터(Parameter) 받기,
세션(Session) 사용,
조건문의 사용입니다.
간단하게 예시로 기능들 정리해 보겠습니다.
1. 파라미터 받기
<%
String name = request.getParameter("name");
%>
<p> 이름: <%= name %></p>
2. 세션 사용
<%
session.setAttribute("user", "James");
%>
<p> 현재 유저 세션값: <%= session.getAttribute("user") %></p>
3. 조건문과 반복문
<%
for(int i = 1 ; i < 4 ; i++) {
%>
<p>숫자: <%= i %></p>
<%
}
%>
- 반복문
<%
if(session.getAttribute("user") != null){
%>
<p> 세션에 user 있음 </p>
<%
}else{
%>
<p> 세션에 user 없음 </p>
<%
}
%>
- 조건문
조건문과 반복문을 사용할 때는 특히 괄호를
닫는 것을 잊지 않아야 합니다.
이 부분에서 가장 오류와 실수가 많이
발생하였습니다.
코드가 복잡해질수록 가독성도 떨어지고
성능이 저하되기 때문에 비즈니스 로직은
MVC패턴으로 다른 Java 클래스에서
처리하고 JSP는 결괏값 출력 중심으로
유지하는 것이 유리하다고 생각합니다.
이번 글에서는 Servlet과 JSP에 대해서
알아보았습니다.
'웹 개발 프로젝트 리뷰 (Web Design)' 카테고리의 다른 글
웹 개발 프로젝트 리뷰 (4) - 세션 (Session) (0) | 2025.06.28 |
---|---|
웹 개발 프로젝트 리뷰 (3) - JDBC & Prepared Statement (2) | 2025.06.27 |
웹 개발 프로젝트 리뷰 (2) - 개인 기능 구현 (2) | 2025.06.26 |
웹 개발 프로젝트 리뷰 (1) - 프로젝트 개요 (4) | 2025.06.25 |