[JSP] 서블릿 (Servlet)

Gabriela·2023년 9월 14일
0

JSP

목록 보기
3/20

Servlet


서블릿이란?

  • 웹 브라우저를 통해서 실행되는 Java 클래스이다.
  • 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 Java 클래스이다.
  • javax.servlet.http.HttpServlet 클래스를 상속 받는다.
  • 일반 자바 클래스와 달리 단독적으로 실행되지 못하고 톰캣(Tomcat)과 같은 Jsp/Servlet 컨테이너에서 실행됨
    • (main() 메소드 없어도 실행)
  • jsp/servlet container(톰캣)저장되기 때문에 동일한 이름의 서블릿을 2개 이상 만들 수 없다.
    (저장하는 곳이 패키지단위가 아니고 서블릿 컨테이너라서 동일한 이름으로 저장이 불가능하다.)
  • 자바 클래스 내부에서 HTML 문서를 만들어서 클라이언트에게 응답(전송)할 수 있다.
  • 서버 쪽에서 실행(Server Side)

(비동기요청(<a>태그)로 요청하든 <form>태그의 서브밋으로 요청하든 그걸 받아내는것은 ⇒ 서블릿이다.)


  • 요청(request) : 클라이언트가 데이터를 서버로 전달한다.
    • <파라미터를 보내는 두가지 방식>
      • HTML 의 요청 : <a>태그를 이용한 단순요청과 <form>태그를 이용한 서브밋
      • javascript 요청 : location.href
  • 응답(response) : 서버에서 데이터를 클라이언트에게로 전달한다.

HttpServlet 클래스

  • 사용자 요청을 의미하는 HttpServletRequest 클래스의 슈퍼 클래스
  • 서버 응답을 의미하는 HttpServletResponse 클래스의 슈퍼 클래스

Servlet Life Cycle

  • 서블릿은 자바 클래스이므로 초기화/인스턴스생성/인스턴스소멸 등의 과정을 거침
  • 각 과정별로 미리 약속된 메소드가 호출되는 콜백 메소드가 존재함

URL

형식

  • protocol://host:port/ContextPath/URLMapping
  • 경로 작성
    • ContextPath : 프로젝트 대표주소
    • URLMapping : 서블릿(파일)
      ⇒ 어떤 프로젝트의 어떤 서블릿이냐는 의미

ContextPath

(Context Path = Context Root)

  • 프로젝트가 실행될 때 가지는 기본 경로를 의미한다. (Context Root)
  • 기본적으로 프로젝트이름과 컨텍스트패스는 동일함
  • 수정 방법
    • 프로젝트 속성(properties) - Web Project Settings

URLMapping

  • 서블릿의 실행 경로를 의미한다. (URL Pattern)
  • 수정 방법
    • @WebServlet 애너테이션
    • 프로젝트 src/main/webapp/WEB-INF/web.xml

URL Mapping 변경 방법

  • Servlet 클래스에서 @WebServlet 애너테이션 등록하기
  • web.xml 파일<servlet> 태그 등록하기

생성자

  • 서블릿 생성할 때 호출된다. (가장 먼저 호출된다.)
  • 서블릿 생성 후 자동으로 init() 메소드가 호출된다.

init()

  • 서블릿 환경 설정을 담당하는 메소드이다.
  • init() 메소드 호출 뒤 자동으로 service() 메소드가 호출된다.

service() 메소드

  • 클라이언트가 요청할 때 자동으로 호출되는 메소드이다.
  • 클라이언트로부터 요청을 받을 수 있고, 클라이언트에게 응답할 수 있다.
  • service() 메소드가 없으면 doGet() 또는 doPost()와 같은 메소드가 요청 메소드에 따라서 자동으로 호출된다.

요청을 처리하는 클래스

  • javax.servlet.http.HttpServletRequest
    • getParameter()를 통해 받는다.

응답을 처리하는 클래스

  • javax.servlet.http.HttpServletResponse

doGet()

  • GET 방식의 요청을 처리하는 메소드이다.
  • 기본적으로 POST 방식의 요청도 처리하도록 구성되어 있다.
    (<form>태그에서 method를 생략하면 자동으로 get 방식으로 전달)

GET 방식으로 요청하는 방법

  • <a href="/ContextPath/URLMapping">
  • <form method="get" action="/ContextPath/URLMapping">
  • location.href = '/ContextPath/URLMapping'
  • window.open('/ContextPath/URLMapping', '', '')
  • $.ajax({
             type: 'get',
             url: '/ContextPath/URLMapping',
    			 ...
           })

doPost()

  • POST 방식의 요청을 처리하는 메소드이다.
  • 기본적으로 POST 방식의 요청이 오더라도 doGet()으로 처리이관한다.

POST 방식으로 요청하는 방법

  • <form method="post" action="/servlet/HelloServlet">
  • $.ajax({
           type: 'post',
           url: '/servlet/HelloServlet',
    			...
    })

  • 예제 관계 설명
    • NewFile클라이언트
    • Java Package서버로 봄


  • 컨트롤러(Controller) : 사용자의 수 많은 요청을 받아서 응답을 관장

👉Servlet 정리 깃허브(클릭)

👉Servlet 요청방법 깃허브(클릭)


JSP is very very IMPORTANT💐


profile
개발이 세상에서 제일 재밌어요

0개의 댓글