Java는 강력하고 유연한 웹 애플리케이션 개발 환경을 제공합니다. 서블릿(Servlet)과 JSP(JavaServer Pages)는 Java 웹 애플리케이션의 핵심 구성 요소로, 서버 측에서 동적 콘텐츠를 생성하고 사용자 요청을 처리하는 데 사용됩니다. 이번 블로그에서는 Java에서의 웹 애플리케이션 개발에서 서블릿과 JSP 활용법 알아보겠습니다.
1. 서블릿(Servlet)과 JSP란?
서블릿(Servlet)
- Java를 기반으로 작성된 서버 측 프로그램으로, 클라이언트 요청을 처리하고 응답을 생성합니다.
- Java EE 표준에 포함된 기술로, HTML, JSON, XML 등의 데이터를 생성할 수 있습니다.
JSP(JavaServer Pages)
- HTML 코드 내에 Java 코드를 삽입하여 동적 콘텐츠를 생성할 수 있는 기술입니다.
- 서블릿을 기반으로 동작하며, 프레젠테이션 로직에 특화되어 있습니다.
2. 서블릿과 JSP의 차이점
특징 | 서블릿(Servlet) | JSP(JavaServer Pages) |
---|---|---|
초점 | 비즈니스 로직 처리 | 프레젠테이션 로직 처리 |
코드 작성 | Java 코드로 작성 | HTML 내에 Java 코드 삽입 가능 |
컴파일 | 수동으로 컴파일 필요 | 자동으로 서블릿 코드로 변환 및 컴파일 |
유지보수성 | 코드가 장황하여 유지보수가 어려울 수 있음 | HTML 기반으로 직관적이고 유지보수 용이 |
3. 서블릿(Servlet) 기본 사용법
- 서블릿 클래스 작성: 서블릿은
HttpServlet
클래스를 상속받아 구현합니다.import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/hello") public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.getWriter().println("<h1>Hello, World!</h1>"); } }
- 서블릿 배포:
web.xml
또는 애너테이션(@WebServlet
)을 사용하여 서블릿 매핑을 정의합니다. - 서버 실행 및 요청 테스트: 브라우저에서
http://localhost:8080/hello
로 접근하여 결과를 확인합니다.
4. JSP(JavaServer Pages) 기본 사용법
- JSP 파일 작성: JSP 파일은 HTML 코드와 Java 코드를 함께 작성합니다.예제:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <title>Hello JSP</title> </head> <body> <h1>Hello, <%= request.getParameter("name") %>!</h1> </body> </html>
- JSP 실행: 작성한 JSP 파일을
webapps
디렉터리에 배치한 후, 브라우저에서 접근합니다.예:http://localhost:8080/hello.jsp?name=John
5. 서블릿과 JSP의 통합 활용
실제 애플리케이션에서는 서블릿과 JSP를 함께 사용하여 비즈니스 로직과 프레젠테이션 로직을 분리합니다.
- 서블릿에서 데이터 처리:
@WebServlet("/greet") public class GreetServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); request.setAttribute("greeting", "Hello, " + name + "!"); request.getRequestDispatcher("greet.jsp").forward(request, response); } }
- JSP에서 데이터 표시:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <title>Greeting</title> </head> <body> <h1><%= request.getAttribute("greeting") %></h1> </body> </html>
6. 서블릿과 JSP의 장단점
서블릿의 장점
- 세밀한 제어 가능 합니다.
- 비즈니스 로직 처리에 적합합니다.
서블릿의 단점
- 코드가 복잡하고 길어질 수 있습니다.
JSP의 장점
- HTML 기반으로 작성하므로 직관적 입니다.
- 프레젠테이션 로직 작성에 적합합니다.
JSP의 단점
- 비즈니스 로직 구현에는 부적합합니다.
7. 서블릿과 JSP를 넘어: 최신 대안
- Spring MVC
- 강력한 MVC(Model-View-Controller) 아키텍처를 제공하며, 서블릿과 JSP의 단점을 보완합니다.
- Thymeleaf
- HTML 기반의 템플릿 엔진으로, JSP보다 현대적이고 유지보수성이 뛰어납니다.
결론
Java에서의 웹 애플리케이션 개발에서 서블릿과 JSP 활용법 알아보았습니다. Java의 서블릿과 JSP는 웹 애플리케이션 개발의 기본적인 도구입니다. 서블릿은 비즈니스 로직 처리를, JSP는 프레젠테이션 로직 작성을 담당하여 역할을 분리하는 방식으로 활용할 수 있습니다.
그러나 현대적인 요구사항에 맞추어 Spring MVC와 같은 프레임워크와 템플릿 엔진을 사용하는 것도 고려해 보시길 바랍니다. 이를 통해 더 강력하고 유지보수 가능한 애플리케이션을 개발할 수 있습니다.
다음시간에는 Java에서의 애너테이션(Annotation) 활용법에 대해 알아 보겠습니다. 감사합니다.