[JSP]Servlet 시작하기

2022. 8. 20. 15:21JSP

728x90

👋서블릿(Servlet) 이란

서블릿은 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 구현 규칙을 지킨 자바프로그램(클래스)이다.

 

👋서블릿(Servlet) 특징

- 동적 웹 어플리케이션 컴포넌트이다.

- 확장자 -> .java 이다.

- 클라이언트 요청에 동적작동, 응답은 HTML 이용.

- 자바 Thread를 이용하여 동작

- MVC 패턴에서 Controller로 이용된다.

 

👋서블릿(Servlet) 작동순서

클라이언트에서 servlet 요청이 들어오면 서버에서는 servlet 컨테이너를 만들고, 요청이 있을때마다 스레드가 생성된다.

java는 멀티쓰레드를 지원하기 때문에 다른 CGI 언어에 비해 서버부하가 적다.

서블릿은 JAVA를 기반으로 하기 때문에 서버 안의 JVM(멀티스레드 지원)을 통해 스레드 생성 후 요청을 생성된 스레드로 보낸다.

 

*CGI : 웹서버와 외부 프로그램 사이에서 정보를 주고받는 방법이나 규약

 

서블릿 파일 만들기

👋Context Path

WAS(Web Application Server)에서 웹 어리케이션을 구분하기 위한 path이다.

이클립스에서 프로젝트를 생성하면, 자동으로 server.xml에 추가된다.

👋Servlet Mapping

Servlet Mapping이란 특정 servlet을 요청할 때, 전체 경로를 URL에 써주면 너무 복잡하고 보안에도 취약하기 때문에, 간단하게 경로를 표현해주는 것이다.

web.xml을 이용하는 방식과 어노테이션을 이용하는 방식이 있다.

 

Servlet 클래스

👋request & response

클라이언트로부터 요청이 들어오면 WAS는 요청할 때 가지고 있는 정보를 HttpServletRequest 객체를 생성하여 저장한다. 또한 웹 브라우저에게 응답을 보낼 때 사용하기 위해 HttpServletResponse 객체를 생성하고, 생성된 두 객체를 서블릿에 전달한다.

HttpServletRequest HttpServletResponse
http 프로토콜의 request 정보를 서블릿에게 전달하기 위한 목적으로 사용 WAS는 해당 클라이언트에게 응답을 보내기 위한 HttpServletResponse 객체를 생성하여 서블릿에게 전달한다.
헤더정보, 파라미터, 쿠키, URI, URL 등의 정보를 읽어 들이는 메소드를 가지고 있다. 서블릿은 해당 객체를 이용하여 Content type, 응답코드, 응답 메세지 등을 전송한다.

Servlet 클래스 활용

package com.java.servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

@WebServlet("/Servlet01")
public class Servlet01 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		out.print("<!DOCTYPE html>");
		out.print("<html>");
		out.print("<head>");
		out.print("<title>Servlet 시작!</title>");
		out.print("</head>");
		out.print("<body>");
		out.print("<h2>서블릿 시작합니다!!!</h2>");
		out.print("</body>");
		out.print("</html>");
		
		out.close();
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		
	}

}