로운's 기술노트

Servlet과 JSP 차이 본문

항해99_'22.01~04/개념

Servlet과 JSP 차이

로운's 2022. 2. 1. 20:09

■ 개념

ㅇ Servlet

 : 서블릿(servlet)은 서버에서 웹페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바로 작성된 프로그램이다. Java코드 안에 HTML태그가 삽입되며 자바언어로 되어있다는 특징이 있다('.java'가 확장자이다). 자바언어를 웹어플리케이션에 조금 더 개발하기 쉽게 하기 위해 만든 API(라이브러리, 클래스 들)이며 이 규약에 맞는 라이브러리나 클래스들을 상속 및 구현하여 만든 클래스를 '서블릿'이라고 한다.

 

  • Java 코드 안에 HTML 코드 (하나의 클래스)
  • data processing(Controller)에 좋다.
    즉 DB와의 통신, Business Logic 호출, 데이터를 읽고 확인하는 작업 등에 유용하다.
  • Servlet이 수정된 경우 Java 코드를 컴파일(.class 파일 생성)한 후 동적인 페이지를 처리하기 때문에 전체 코드를 업데이트하고 다시 컴파일한 후 재배포하는 작업이 필요하다. (개발 생산성 저하)

ㅇ JSP

 : HTML 내부에 Java코드를 삽입하는 형식으로 서블릿의 단점을 보완하고자 만든 서블릿 기반의 스크립트 기술이다. 서블릿을 이용하게 되면 웹프로그래밍을 할 수 있지만 자바에 대한 지식이 필요하며 화면 인터페이스 구현에 너무 많은 코드를 필요로 하는 등 비효율적인 측면들이 있다. 때문에 서블릿을 작성하지 않고도 간편하게 웹프로그래밍을 구현하게 만든 기술이 JSP(Java Server Pages)이다.

 

  • HTML 코드 안에 Java 코드
  • presentation(View)에 좋다.
    즉 요청 결과를 나타내는 HTML 작성하는데 유용하다.
  • JSP가 수정된 경우 재배포할 필요가 없이 WAS가 알아서 처리한다. (쉬운 배포)

 

■ 차이

 : 결과적으로 Servlet과 JSP는 역할의 차이는 없고 만드는 방법의 차이만 있다.

 

Servlet JSP
~ 자바코드로 구현하고 컴파일하고 배포해야 한다.
~ HTML태그로 문자열("")스크림으로 처리해야 한다.
~ 코드가 수정되면 다시 컴파일하고 배포해야 한다.
~ 키워드가 태그화 되어 서블릿에 비해 배우기 쉽다.
~ 자바코드를 <%%>태그 안에 처리해주어야 한다.
~ HTML처럼 태그를 사용하여 자바코드도 사용이 가능하다.

 

ㅇ 예시

 - Servlet

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public ThreeParams extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        response.setContentType("text/html");
        printWriter out = response.getWriter();
        
        String title = "Reading Three Request Parameters";
        String docType = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
        
        out.println(docType + 
            "<HTML>\n" +
            "<HEAD><TITLE>" + title + "</TITLE></HEAD>\n" +
            "<BODY BGCOLOR=\"#FDF5E6\">\n" +  
            "<H1 ALIGN=\"CENTER\">" + title + "</H1>\n" + 
            "<UL>\n" + 
            "<LI><B>param1</B>: " + request.getParameter("param1") + "\n" +
            "<LI><B>param2</B>: " + request.getParameter("param2") + "\n" +
            "<LI><B>param3</B>: " + request.getParameter("param3") + "\n" +
            "</UL>\n" +
            "</BODY></HTML>");
        )
    }
}
https://gmlwjd9405.github.io/2018/11/04/servlet-vs-jsp.html

 

- JSP

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Reading Three Request Parameters</TITLE>
<LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css">
</HEAD>

<BODY>
<H1>Reading Three Request Parameters</H1>
<UL>
    <LI><B>param1</B>: <%= request.getParameter("param1") %>
    <LI><B>param2</B>: <%= request.getParameter("param2") %>
    <LI><B>param3</B>: <%= request.getParameter("param3") %>
</UL>
</BODY>
</HTML>
https://gmlwjd9405.github.io/2018/11/04/servlet-vs-jsp.html

 

 

[출처]

https://m.blog.naver.com/acornedu/221128616501
https://gmlwjd9405.github.io/2018/11/04/servlet-vs-jsp.html

'항해99_'22.01~04 > 개념' 카테고리의 다른 글

Process, Thread가 뭘까?  (0) 2022.04.26
클래스, 객체, 인스턴스를 알아보자  (0) 2022.04.26
TDD vs BDD vs DDD vs ATDD  (0) 2022.02.09
Rest API의 put과 patch의 차이  (0) 2022.01.25
JPA란?  (0) 2022.01.22
Comments