티스토리 뷰

Dev/Java

Servlet & JSP의 차이

꿈을 위해 잠을 잊은 그대에게 2020. 6. 12. 15:47

ServletJSP의 개념

기능의 차이는 없고 역할의 차이만 있다. (하는 일은 동일)

 

Servlet이란

웹 기반의 요청에 대한 동적인 처리가 가능한 Server Side에서 돌아가는 Java Program

Java 코드 안에 HTML 코드 (하나의 클래스)

웹 개발을 위해 만든 표준

 

JSP

Java 언어를 기반으로 하는 Server Side 스크립트 언어

HTML 코드 안에 Java 코드

Servlet를 보완하고 기술을 확장한 스크립트 방식 표준

Servlet의 모든 기능 + 추가적인 기능

 

ServletJSP의 차이

 

Servlet

Java 코드 안에 HTML 코드 (하나의 클래스)

data processing(Controller)에 좋다.

DB와의 통신, Business Logic 호출, 데이터를 읽고 확인하는 작업 등에 유용하다.

Servlet이 수정된 경우 Java 코드를 컴파일(.class 파일 생성)한 후 동적인 페이지를 처리하기 때문에 전체 코드를 업데이트하고 다시 컴파일한 후 재배포하는 작업이 필요하다. (개발 생산성 저하)

 

JSP

HTML 코드 안에 Java 코드

presentation(View)에 좋다.

즉 요청 결과를 나타내는 HTML 작성하는데 유용하다.

JSP가 수정된 경우 재배포할 필요가 없이 WAS가 알아서 처리한다. (쉬운 배포)

 

ServletJSP의 예시

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>");
        )
    }
}

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>

ServletJSP의 관계

 

JSP만을 이용하는 모델 => 모델1

JSP가 사용자의 요청을 받아 Java Bean(DTO, DAO)을 호출하여 적절한 동적인 페이지를 생성한다.

 

동작 과정

JSP로 작성된 프로그램은 내부적으로 WAS에서 Servlet 파일로 변환

JSP 태그를 분해하고 추출하여 다시 순수한 HTML 웹 페이지로 변환

클라이언트로 응답

 

특징

개발 속도가 빠르다.

배우기 쉽다.

프레젠테이션 로직(View)과 비즈니스 로직(Controller)이 혼재한다.

JSP 코드가 복잡해져 유지 보수가 어려워진다.

 

JSPServlet을 모두 이용하는 모델 (MVC Architecture) => 모델2

JSPServlet을 모두 사용하여 프레젠테이션 로직(View)과 비즈니스 로직(Controller)을 분리한다.

View(보여지는 부분)HTML이 중심이 되는 JSP를 사용

Controller(다른 자바 클래스에 데이터를 넘겨주는 부분)Java 코드가 중심이 되는 Servlet을 사용

ModelJava Beans, DTODAO를 통해 Mysql과 같은 Data Storage에 접근

'Dev > Java' 카테고리의 다른 글

문자열 클래스  (0) 2020.07.09
POJO(Plain Old Java Object)  (0) 2020.06.29
스프링(Spring) 의존성 주입(DI)과 제어 역전(IoC) 기능  (0) 2020.06.08
JSP (JAVA Server Page)  (0) 2020.06.04
서블릿 (Servlet)  (0) 2020.06.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크