본문 바로가기
학습/JSP

2. 서블릿

by Elfen Lied 2022. 10. 31.
반응형

- 서블릿이란

  • 서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스
  • 독자적으로 실행되지 못하고 톰캣과 같은 JSP/Servlet 컨테이너에서 실행된다.
  • 서버에서 실행되다가 웹 브라우저에서 요청을 하면 해당 기능을 수행한 후 웹 브라우저에 결과 전송함.

target runtime에 톰캣 선택후 Next 두번하면 아래와 같이 나온다

체크박스 체크해주고 finish

 

 

webapp에 html 파일 만들어줌

 

작성후 코드창에 우클릭 Run as >> Run on Server

Add and Remove에는 만든 프로젝트로 선택하고 Finish

 

 


src/main/java에서 class FirstServlet 만들어주고 HttpServlet을 상속해줌

doGet(), doPost(), init() 만들어줌

 

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FirstServlet extends HttpServlet{

	// 최초 요청시
	@Override
	public void init() throws ServletException {
		System.out.println("FirstServvlet 초기화 : init메소드 호출");
	}
	
	// doget 입력한뒤 ctrl + 1로 만듬
	// doGet, doPost는 요청받은 작업을 수행
	// 요청을 받을 때 마다 실행
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// get방식의 요청에 응답
		System.out.println("doGet()메소드 호출");
	}
	
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// post방식의 요청에 응답
		System.out.println("doPost()메소드 호출");
	}
}

 

- 매핑 하기

webapp >> WEB-INF안에 web.xml 선택

위 부분에 입력해준다.

 <!-- 서블릿 등록 : FirstServlet을 aaa이름으로 등록 -->
  <servlet>
  	<servlet-name>aaa</servlet-name>
  	<servlet-class>sec01.ex01.FirstServlet</servlet-class>
  </servlet>
  
  <!-- 서블릿 매핑 -->
  <servlet-mapping>
  	<servlet-name>aaa</servlet-name>
  	<url-pattern>/first</url-pattern>
  </servlet-mapping>

아래쪽 url-pattern에 /first 부분은 본인이 임의로 입력하면 됨.

first앞에 슬래쉬 ( / ) 반드시 넣어줘야함

web.xml 변경 사항 반영하려면 톰캣 재실행 해줘야함.

 

톰캣 재실행 후 브라우저 주소창에 입력후 enter 치고 이클립스 콘솔창을 확인해보자

  • FirstServvlet 초기화 : init메소드 호출
  • doGet()메소드 호출

이라고 메소드들이 호출되면 성공.

 

- 위 과정 풀이

  • 먼저 init이 실행되고 get방식으로 요청했기때문에 doGet()으로 실행됨
  • init은 처음 서버 올릴때만 실행되고 그 후로는 실행 안됨.

 

 

- 서블릿 생명주기 메소드

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

 

반응형

댓글