Java에서의 웹 애플리케이션 개발에서 서블릿과 JSP 활용법 알아보기

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) 기본 사용법

  1. 서블릿 클래스 작성: 서블릿은 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>");
        }
    }
  2. 서블릿 배포: web.xml 또는 애너테이션(@WebServlet)을 사용하여 서블릿 매핑을 정의합니다.
  3. 서버 실행 및 요청 테스트: 브라우저에서 http://localhost:8080/hello로 접근하여 결과를 확인합니다.

4. JSP(JavaServer Pages) 기본 사용법

  1. 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>
  2. JSP 실행: 작성한 JSP 파일을 webapps 디렉터리에 배치한 후, 브라우저에서 접근합니다.예: http://localhost:8080/hello.jsp?name=John

5. 서블릿과 JSP의 통합 활용

실제 애플리케이션에서는 서블릿과 JSP를 함께 사용하여 비즈니스 로직과 프레젠테이션 로직을 분리합니다.

  1. 서블릿에서 데이터 처리:
    @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);
        }
    }
  2. 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를 넘어: 최신 대안

  1. Spring MVC
    • 강력한 MVC(Model-View-Controller) 아키텍처를 제공하며, 서블릿과 JSP의 단점을 보완합니다.
  2. Thymeleaf
    • HTML 기반의 템플릿 엔진으로, JSP보다 현대적이고 유지보수성이 뛰어납니다.

결론

Java에서의 웹 애플리케이션 개발에서 서블릿과 JSP 활용법 알아보았습니다. Java의 서블릿과 JSP는 웹 애플리케이션 개발의 기본적인 도구입니다. 서블릿은 비즈니스 로직 처리를, JSP는 프레젠테이션 로직 작성을 담당하여 역할을 분리하는 방식으로 활용할 수 있습니다.

그러나 현대적인 요구사항에 맞추어 Spring MVC와 같은 프레임워크와 템플릿 엔진을 사용하는 것도 고려해 보시길 바랍니다. 이를 통해 더 강력하고 유지보수 가능한 애플리케이션을 개발할 수 있습니다.

다음시간에는 Java에서의 애너테이션(Annotation) 활용법에 대해 알아 보겠습니다. 감사합니다.

Leave a Comment