Servlet

zee-chive·2024년 9월 19일

Back

목록 보기
1/3

프로그램 : 명령어들의 모음집 Main 메소드

물리적인 프로그램을 제공하는 것이 아닌, 서버를 통해서 프로그램을 전송하는 방식

클라이언트(브라우저)가 서버에 요청(request)를 하게 되면, 서버는 응답(response)하게 된다.
서버가 데이터를 제공하게 되는 경우, 클라이언트가 직접 화면을 만들게 된다. (Ajax 통신)



servlet = server + applet

  • java를 이용하여, 웹 페이지를 동적으로 생성할 수 있다.
  • servlet 은 자바 코드 안에 HTML을 포함한다.

Servlet 등록 방법
1. web.xml 에 등록

  <servlet>
  	<servlet-name>MyServlet4</servlet-name>
  	<servlet-class>com.ssafy.myservlet.MyServlet4</servlet-class>
  </servlet>
  
  
  <!-- servlet을 찾아가는 방법 설정하는 방식  -->
  <servlet-mapping>
  	<servlet-name>MyServlet4</servlet-name>
  	<url-pattern>/MyServlet</url-pattern>
  </servlet-mapping>
  1. Annotation : @WebServlet("/Hello")
@WebServlet("/servlet5")
public class MyServlet5 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;characterset=UTF-8");
		PrintWriter writer = response.getWriter();

		//Java 15 버전에 나온 Block String
		writer.write("""
					<html>
					  <head><title>Hello! SSAFY!</title></head>
					  <body>
					    <h1>Hello! Servlet5!</h1>
					  </body>
					</html>
					""");
		// 하나의 서블릿은 여러 경로를 가질 수 있지만, 하나의 경로는 하나의 서블릿만 가져야 한다. 
	}
}


Servlet 생명주기 (Life-Cycle)

  • Servlet 인스턴스는 웹컨테이너에 의해 제어
  • Servlet 인스턴스가 존재하지 않으면 아래의 작업을 수행
    1. Servlet 클래스 로드
    2. Servlet 클래스 인스턴스 생성
    3. Servlet 인스턴스 초기화
    4. 웹 컨테이너에 의한 서비스 메서드 호출
    5. destroy 메서드를 호출하여 Servlet 종료
  • 서비스 메서드는 요청이 들어올 때 마다 호출
@WebServlet("/LifeCycle")
public class LifeCycle extends HttpServlet {
	private static final long serialVersionUID = 1L;

	int initCount = 1;
	int doGetCount = 1;
	int destroyCount = 1;

	public LifeCycle() {
		System.out.println("생성자 호출!");
	}

	public void init(ServletConfig config) throws ServletException {
		System.out.println("init 메서드 호출" + (initCount++));
	}

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

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		System.out.println("doGet 메서드 호출" + (doGetCount++));
		// 객체를 새로 생성하는 것이 아니라, 
		// 계속해서 메서드를 호출하는 것이다. 
	}
}
  • Servlet은 싱글톤으로 관리한다고 볼 수 있다.
  • 새로고침 시, doGet의 메소드만 호출이 되기 때문에.


URL 구성요소

  • 프로토콜 : 절차를 포함한 통신규약
  • 서버 : 웹 페이지를 요청할 서버의 주소, 실제 IP 주소나 도메인을 입력할 수 있다.
  • 경로 : 서버 내의 상세 경로
  • 쿼리 스트링
    : 추가로 서버로 데이터를 전송하기 위해서 사용한다. ‘?’ 마크를 적어 시작한다.
    Parameter Name=value 형태로 작성하며, 파라미터가 여러 개 일 경우 ‘&’로 구분하여 작성한다.
profile
누가 봐도 읽기 쉬운 글이 최고의 글이다.

0개의 댓글