Skip to content

Instantly share code, notes, and snippets.

@lhy880518
Last active April 13, 2019 23:57
Show Gist options
  • Save lhy880518/b8a77c1325cb2b9baa54d868c6154ae2 to your computer and use it in GitHub Desktop.
Save lhy880518/b8a77c1325cb2b9baa54d868c6154ae2 to your computer and use it in GitHub Desktop.
서블릿이란?

Servlet???JSP???

Servlet

  • 정의 - 웹 프로그래밍에서 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 ServLet클래스의 구현 규칙을 지킨 자바 프로그래밍 기술
    • 자바를 사용하여 웹을 만들기 위해 필요한 기술, 클라이언트가 어떤 요청을 하면 그에 대한 결과를 다시 전송 해주어야 하는데, 이러한 역할을 하는 자바 프로그램
    • 특징
      • 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
      • HTML을 사용하여 요청에 응답한다.
      • Java Thread를 이용하여 동작한다.
      • MVC패턴에서 Controller로 이용된다.
      • HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet클래스를 상속받는다. UDP보다 속도가 느리다.
      • HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다.
    • 동작방식 동작방식
    1. 클라이언트가 URL을 클릭하면 HTTP Request를 Servlet Container로 전송합니다.
    2. HTTP Request를 전송받은 Servlet Container는 HttpServletRequest, HttpServletResponse두 객체를 생성합니다.
    3. web.xml은 사용자가 요청한 URL을 분석하여 어느 서블릿에 대해 요청한 것인지 찾습니다.
    4. 해당 서블릿에서 service메소드를 호출한 후 클라이언트의 POST,GET여부에 따라 doGet() 또는 doPost()를 호출합니다.
    5. doGet() doPost()메소드는 동적 페이지를 생성한 후 HttpServletResponse객체의 응답을 보냅니다.
    6. 응답이 끝나면 HttpServletRequest, HttpServletResponse두 객체를 소멸시킵니다.

Jsp

  • 정의 - Servelet의 불편함을 보완하고자 만든 서블릿 기반의 스크립트 기술이다.(스크립트 기술 - ASP, PHP 처럼 미리 약속된 규정에 따라 간단한 키둬드를 조합하여 입력하면, 실행 시점에 각각의 키워드에 매핑이 되어 있는 어떤 코드로 변환 후에 실행되는 형태)
  • 동작방식
  1. 브라우저가 웹서버에 JSP에 대한 요청 정보를 전달한다.
  2. 브라우저가 요청한 JSP가 최초로 요청했을 경우만 JSP로 작성된 코드가 서블릿으로 코드로 변환한다. (java 피일 생성)
  3. 서블릿 코드를 컴파일해서 실행가능한 bytecode로 변환한다. (class 파일 생성)
  4. 서블릿 클래스를 로딩하고 인스턴스를 생성한다.
  5. 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다.
  • jsp의 class파일 생성 위치

    • jsp를 용하게되면 다음 경로에 변환된 java servlet로 변환되어 실행된다.
    • jsp 생성 경로 : "eclipseworkspace".metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps"프로젝트명"\test.jsp
    • java servlet 생성 경로 : "eclipseworkspace".metadata.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost"프로젝트명"\org\apache\jsp\test.class "eclipseworkspace".metadata.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost"프로젝트명"\org\apache\jsp\test.java"
  • Servlet과 Jsp 비교

servletJsp

  • Servlet과 Jsp에 대한 이야기
  1. 초기에 자바 웹 개발은 서블릿을 이용한 개발이였다.
  2. 이후 불편함을 해소하고자 Jsp기술이 발표되면서 Jsp형태의 개발이 유행하게 되고 지금에 와서 각각 역할을 나누어 Servelet+Jsp 형태의 개발이 이루어지고 있다.
  3. Jsp는 장점을 최대한 활용 할 수 있는 웹어플리케이션 구조에서 사용자에게 결과를 보여주는 프리젠테이션 층을 담당하고 있다.
  4. Servlet은 사용자의 요청을 받아 분석하고 비지니스 층과 통신하여 처리하고 처리한 결과를 다시 사용자에게 응답하는 컨트롤러 층을 담당한다.

MVC패턴에서의 JSP와 Servlet

  • Model1에서는 Jsp페이지 하나만을 가지고 뷰와 로직처리를 동시에 개발진행하였다.
  • Model2에서는 Servlet을 통하여 비지니스 로직(Java소스내부)과 뷰(Jsp)를 분리하여 처리한다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment