좌선
좌선의 개발일지
좌선
전체 방문자
오늘
어제
  • 분류 전체보기 (79)
    • 개발환경 (3)
    • 알고리즘 (10)
      • 코딩테스트 (9)
      • 알고리즘 (1)
    • Java (54)
      • JPA (6)
      • Spring (5)
      • SpringBoot (15)
    • Network (2)
    • Database (1)
    • Git (2)
    • & (1)
    • Exception (3)
    • Study (0)
      • RealMySQL (0)
    • 회고 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스프링부트와 AWS로 혼자 구현하는 웹 서비스
  • 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
  • 테스트주도개발
  • 쿼리로그
  • Spring Data JPA
  • 자바웹을다루는기술
  • Spring
  • TDD 실천법과 도구
  • 머스테치
  • AWS
  • 더티체킹
  • programmers
  • 프로그래머스
  • SpringBoot
  • 다트게임
  • dirtychecking
  • 자바 웹을 다루는 기술
  • 스프링부트
  • Mustache
  • 코드로배우는스프링웹프로젝트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
좌선

좌선의 개발일지

Servlet
Java

Servlet

2021. 4. 1. 16:43

"서블릿"

서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스

서블릿은 서버에서 실행되다가 웹 브라우저에서 요청을 하면 해당 기능을 수행한 후 웹 브라우저에 결과 전송

서버에서 실행되므로 보안과 관련된 기능도 훨씬 안전하게 수해아능

 

서블릿 동작 과정

클라이언트 -> 웹 서버에 요청

웹 서버 -> WAS(톰캣)에 위임

WAS -> 요청에 해당하는 서블릿 실행

서블릿 -> 기능 수행 후 클라이언트에 전송

 

서블릿의 기능

서버 쪽에서 실행되면서 기능 수행

스레드 방식으로 실행

자바로 만들어져 자바의 특징을 가진다

컨테이너에서 실행

보안 기능을 적용하기 쉽다

웹 브라우저에서 요청 시 기능 수행

 

HttpServlet 클래스

HTTP 프로토콜을 사용하는 서블릿 기능을 구현하는 클래스

서블릿 -> HttpServlet 상속 받아 HTTP 프로토콜로 동작하는 웹 브라우저의 요청을 처리

메서드 기능
protected doDelete(HttpServletRequest req, HttpServletResponse resq) DELETE request를 수행하기 위해 service()를 통해 호출
protected doGet(HttpServletRequest req, HttpServletResponse resq) GET request를 수행하기 위해 service()를 통해 호출
protected doHead(HttpServletRequest req, HttpServletResponse resq) HEAD request를 수행하기 위해 service()를 통해 호출
protected doPost(HttpServletRequest req, HttpServletResponse resq) POST request를 수행하기 위해 service()를 통해 호출
protected service(HttpServletRequest req, HttpServletResponse resq) 표준 HTTP request를 public service()에서 전달받아 doXXX() 메서드 호출
public service (HttpServletRequest req, HttpServletResponse resq) 클라이언트의 request를 protected service()에게 전달

클라이언트 요청 시 public service() 메서드 먼저 호출 ->
protected service() 메서드 호출 ->

request 종류에 따라 doXXX() 메서드를 호출

 

서블릿의 생명주기 메서드

생명주기단계 호출메서드 특징
초기화 init() 서블릿 요청 시 맨 처음
서블릿 생성 시 초기화 작업
작업 수행 doGET()
doPOST()
서블릿 요청 시 매번 호출
실제로 클라이언트가 요청하는 작업 수행
종료 destroy() 서블릿이 기능을 수행하고 메모리에서 소멸될 때 호출
서블릿의 마무리 작업 주로 수행

doGET() doPOST()와 같이 do로 시작하는 메서드는 서블릿의 핵심 기능을 처리하므로 반드시 구현

 

서블릿을 만들고 실행하는 과정

1. 사용자 정의 서블릿 클래스 만들기

2. 서블릿 생명주기 메서드 구현

3. 서블릿 매핑 작업

4. 웹 브라우저에서 서블릿 매핑 이름으로 요청하기

 

1. 사용자 정의 서블릿 만들기

public class FirstServlet  extends HttpServlet{ 
   public void init() throws ServletException {
      System.out.println("init 메서드 호출");
   }

   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws  ServletException, IOException {
      System.out.println("doGet 메서드 호출");
   } 

   public void destroy() {
      System.out.println("destroy 메서드 호출");
   }
}

 

2. 서블릿 매핑하기

브라우저에서 서블릿 요청 방법

http://IP주소:포트번호/프로젝트이름/패키지이름이 포함된 클래스이름

 

서블릿 매핑 과정

 - 각 프로젝트에 있는 web.xml에서 설정

 - <servlet> 태그와 <servlet-mapping> 태그 이용

 - 여러 개의 서블릿 매핑 시에는 <servlet> 태그를 먼저 정의하고 <servlet-mapping> 태그 정의

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <servlet>
    <servlet-name>aaa</servlet-name>
    <servlet-class>sec01.ex01.FirstServlet</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>bbb</servlet-name>
    <servlet-class>sec01.ex01.SecondServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>aaa</servlet-name>
    <url-pattern>/first</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>bbb</servlet-name>
    <url-pattern>/second</url-pattern>
  </servlet-mapping>
</web-app>

3. 톰캣에 프로젝트 실행

4. 브라우저에서 서블릿 요청

요청 예 : http://localhost:8090/pro05/first

 

서블릿 동작 과정

1. http://localhost:8090/pro05/first로 요청

2. FirstServlet이 메모리에 존재하는지 확인

3. FirstServlet을 메모리에 로드

4. inti() 호출

5. doGet() 또는 doPost()를 호출

6. 결과 응답

 

    'Java' 카테고리의 다른 글
    • Servlet 웹 브라우저에서 서블릿으로 데이터 전송하기
    • Servlet 애너테이션을 이용한 서블릿 매핑
    • JDBC PreparedStatement
    • JDBC SingletonHelper
    좌선
    좌선
    얼렁뚱땅 천방지축 굴러가는 개발자의 삶

    티스토리툴바