- 정의 - 웹 프로그래밍에서 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 ServLet클래스의 구현 규칙을 지킨 자바 프로그래밍 기술
- 자바를 사용하여 웹을 만들기 위해 필요한 기술, 클라이언트가 어떤 요청을 하면 그에 대한 결과를 다시 전송 해주어야 하는데, 이러한 역할을 하는 자바 프로그램
- 특징
- 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
- HTML을 사용하여 요청에 응답한다.
- Java Thread를 이용하여 동작한다.
- MVC패턴에서 Controller로 이용된다.
- HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet클래스를 상속받는다. UDP보다 속도가 느리다.
- HTML 변경 시 Servlet을 재컴파일해야 하는 단점이 있다.
- 동작방식
- 클라이언트가 URL을 클릭하면 HTTP Request를 Servlet Container로 전송합니다.
- HTTP Request를 전송받은 Servlet Container는 HttpServletRequest, HttpServletResponse두 객체를 생성합니다.
- web.xml은 사용자가 요청한 URL을 분석하여 어느 서블릿에 대해 요청한 것인지 찾습니다.
- 해당 서블릿에서 service메소드를 호출한 후 클라이언트의 POST,GET여부에 따라 doGet() 또는 doPost()를 호출합니다.
- doGet() doPost()메소드는 동적 페이지를 생성한 후 HttpServletResponse객체의 응답을 보냅니다.
- 응답이 끝나면 HttpServletRequest, HttpServletResponse두 객체를 소멸시킵니다.
- 정의 - Servelet의 불편함을 보완하고자 만든 서블릿 기반의 스크립트 기술이다.(스크립트 기술 - ASP, PHP 처럼 미리 약속된 규정에 따라 간단한 키둬드를 조합하여 입력하면, 실행 시점에 각각의 키워드에 매핑이 되어 있는 어떤 코드로 변환 후에 실행되는 형태)
- 동작방식
- 브라우저가 웹서버에 JSP에 대한 요청 정보를 전달한다.
- 브라우저가 요청한 JSP가 최초로 요청했을 경우만 JSP로 작성된 코드가 서블릿으로 코드로 변환한다. (java 피일 생성)
- 서블릿 코드를 컴파일해서 실행가능한 bytecode로 변환한다. (class 파일 생성)
- 서블릿 클래스를 로딩하고 인스턴스를 생성한다.
- 서블릿이 실행되어 요청을 처리하고 응답 정보를 생성한다.
-
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 비교
- Servlet과 Jsp에 대한 이야기
- 초기에 자바 웹 개발은 서블릿을 이용한 개발이였다.
- 이후 불편함을 해소하고자 Jsp기술이 발표되면서 Jsp형태의 개발이 유행하게 되고 지금에 와서 각각 역할을 나누어 Servelet+Jsp 형태의 개발이 이루어지고 있다.
- Jsp는 장점을 최대한 활용 할 수 있는 웹어플리케이션 구조에서 사용자에게 결과를 보여주는 프리젠테이션 층을 담당하고 있다.
- Servlet은 사용자의 요청을 받아 분석하고 비지니스 층과 통신하여 처리하고 처리한 결과를 다시 사용자에게 응답하는 컨트롤러 층을 담당한다.
- Model1에서는 Jsp페이지 하나만을 가지고 뷰와 로직처리를 동시에 개발진행하였다.
- Model2에서는 Servlet을 통하여 비지니스 로직(Java소스내부)과 뷰(Jsp)를 분리하여 처리한다.