JSP < -> Servlet
서블릿(Servlet)과 JSP(JavaServer Pages)는 모두 Java를 기반으로 하는 웹 개발 기술이지만, 목적과 사용 방식에서 몇 가지 차이가 있습니다.
1. **목적:**
- **서블릿:** 자바 코드 안에 HTML 코드를 포함하여 동적인 웹 페이지를 생성하는데 주로 사용됩니다. Java 코드 안에서 HTML을 작성하므로 코드가 복잡해질 수 있습니다.
- **JSP:** HTML 안에 자바 코드를 삽입하여 웹 페이지를 생성하는데 목적이 있습니다. 주로 디자이너와 개발자 간의 협업을 쉽게 하기 위해 만들어졌습니다.
2. **문법:**
- **서블릿:** 자바 코드 안에서 HTML을 문자열 형태로 작성해야 합니다. 코드가 복잡하고 가독성이 떨어질 수 있습니다.
- **JSP:** HTML 문서 안에 자바 코드를 삽입하는 형태로 작성할 수 있습니다. 이는 일반적인 HTML 문법과 유사하게 보이므로 가독성이 향상됩니다.
3. **유지보수 및 개발 생산성:**
- **서블릿:** 자바 코드와 HTML 코드가 혼합되어 있기 때문에 유지보수가 어려울 수 있습니다. 코드 변경 시 자바 클래스를 다시 컴파일해야 합니다.
- **JSP:** HTML과 자바 코드가 분리되어 있어 유지보수가 더 쉽습니다. 변경된 부분만을 다시 컴파일할 수 있어 개발 생산성이 향상됩니다.
4. **컴파일 방식:**
- **서블릿:** 서블릿은 자바 클래스로 변환되어야 하므로 컴파일이 필요합니다.
- **JSP:** JSP는 서블릿으로 변환되어 실행되는데, 이 변환은 필요할 때 자동으로 이루어집니다.
일반적으로 웹 애플리케이션에서는 서블릿과 JSP를 함께 사용하는 것이 일반적이며, 각각의 장점을 살려 개발하는 경우가 많습니다. 최근에는 서블릿과 JSP 대신에 스프링 프레임워크 등의 웹 프레임워크를 사용하는 추세가 높아지고 있습니다.
서블릿 예시 코드:
import java.io.IOException; import java.io.PrintWriter; 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("/HelloServlet") public class HelloServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); String name = request.getParameter("name"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head>"); out.println("<title>Hello Servlet</title>"); out.println("</head>"); out.println("<body>"); out.println("<h2>Hello, " + name + "!</h2>"); out.println("</body>"); out.println("</html>"); } } |
JSP 예시 코드:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Hello JSP</title> </head> <body> <form action="HelloServlet" method="post"> Enter your name: <input type="text" name="name"> <input type="submit" value="Submit"> </form> <% String name = request.getParameter("name"); if (name != null && !name.isEmpty()) { %> <h2>Hello, <%= name %>!</h2> <% } %> </body> </html> |