[Servlet] Servlet 관련 객체 및 API
🧶 𝗪𝗲𝗯/Servlet

[Servlet] Servlet 관련 객체 및 API

 

 

 Servlet 

API Summary

https://javaee.github.io/javaee-spec/javadocs/javax/servlet/Servlet.html

 

Servlet (Java(TM) EE 8 Specification APIs)

Called by the servlet container to indicate to a servlet that the servlet is being taken out of service. This method is only called once all threads within the servlet's service method have exited or after a timeout period has passed. After the servlet con

javaee.github.io

 

API 설명

모든 servlet 에 필요한 메서드를 정의하는 interface 입니다.

여기서 servlet 은 웹 서버 내에서 실행되는 작은 자바 프로그램입니다.

Servlet 은 보통 HTTP 를 통하여 웹 클라이언트로부터 요청을 받고 응답을 합니다.

해당 interface 를 구현하기 위해 GenericServlet 클래스를 extends 하여 작성할 수 있습니다.

Servlet을 초기화하고(init), 요청을 처리하고(service), 서버에서 Servlet 을 제거(destroy)하는 메서드를 정의합니다.

이를 라이프 사이클 메서드라고 합니다.

 

라이프 사이클 메서드 뿐만이 아니라,

해당 인터페이스는 Servlet 이 시작 정보를 가져오는 데 사용할 수 있는 getServletConfig 메서드와

Servlet 의 작성자, 버전 및 저작권 정보를 리턴하는 getServletInfo 메서드 또한 제공하고 있습니다.

더보기

implements Servlet 

package servlet;


import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;


public class ServletTest1 implements Servlet {

	@Override
	public void destroy() {
		// TODO Auto-generated method stub

	}


	@Override
	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}


	@Override
	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}


	@Override
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub

	}


	@Override
	public void service(ServletRequest arg0, ServletResponse arg1)
	    throws ServletException, IOException {
		// TODO Auto-generated method stub

	}

}

 

 

 GenericServlet 

API Summary

https://javaee.github.io/javaee-spec/javadocs/javax/servlet/GenericServlet.html

 

GenericServlet (Java(TM) EE 8 Specification APIs)

Defines a generic, protocol-independent servlet. To write an HTTP servlet for use on the Web, extend HttpServlet instead. GenericServlet implements the Servlet and ServletConfig interfaces. GenericServlet may be directly extended by a servlet, although it'

javaee.github.io

자바에서 Servlet 파일을 만들고 오른쪽 마우스 - [Source] - [Override/Implement Methods...] 를 클릭하면 해당 화면을 보실 수 있습니다. 필요한 API 를 오버라이딩 하고 싶을 때 사용할 수 있습니다.

 

API 설명

일반적인 프로토콜 독립적인 Servlet 을 정의합니다. (웹에서 사용할 HTTP Servlet 을 작성하려면 대신 HttpServlet 으로 상속)

GenericServlet 은 Servlet 및 ServletConfig 인터페이스를 구현합니다.

또한 Servlet 에 의해 상속될 수 있지만 HttpServlet 과 같은 상세 프로토콜 자식 클래스를 상속하는 것이 더 일반적입니다.

라이프 사이클 메서드인 init() 및 destroy() 와 ServletConfig interface 메서드(getServletParameter, getServletContext 등) 의 단순 버전을 제공합니다. 또한 ServletContext interface 메서드인 log() 도 구현합니다.

더보기

GenericServlet Class

package servlet;


import java.io.IOException;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;


public class ServletTest1 extends GenericServlet {

	@Override
	public void service(ServletRequest req, ServletResponse res)
	    throws ServletException, IOException {
		// TODO Auto-generated method stub

	}

}

 

 

 HttpServlet 

API Summary

https://javaee.github.io/javaee-spec/javadocs/javax/servlet/http/HttpServlet.html

 

HttpServlet (Java(TM) EE 8 Specification APIs)

Called by the server (via the service method) to allow a servlet to handle a PUT request. The PUT operation allows a client to place a file on the server and is similar to sending a file by FTP. When overriding this method, leave intact any content headers

javaee.github.io

 

API 설명

HTTP Servlet 에 유용한 하위 클래스를 만들기 위해서 제공된 클래스 입니다.

HttpServlet 을 상속받은 하위 클래스는 해당 메서드 중 적어도 하나 오버라이딩 해서 사용합니다.

  • doGet
  • doPost
  • doPut
  • doDelete
  • init, destroy
  • getServletInfo

service 메서드는 표준 HTTP 요청 유형에 대한 핸들러 이므로, 딱히 메서드를 재정의할 이유가 거의 없습니다.

이와 같은 이유로 doOptions(), doTrace() 메서드도 그렇습니다.

 

Servlet은 일반적으로 다중 스레드 서버에서 실행되므로 Servlet이 동시 요청을 처리하고 공유 리소스에 대한 접근을 동기화(synchronize) 해야한다는 점을 유의해야 합니다.

(공유 리소스에는 인스턴스 또는 클래스 변수와 같은 메모리 내 데이터 파일뿐만이 아니라 DB 연결 및 네트워크 연결과 같은 외부 객체가 포함됩니다.)

 

 

 HttpServletRequest 

API Summary

https://javaee.github.io/javaee-spec/javadocs/javax/servlet/http/HttpServletRequest.html

 

HttpServletRequest (Java(TM) EE 8 Specification APIs)

Validate the provided username and password in the password validation realm used by the web container login mechanism configured for the ServletContext. This method returns without throwing a ServletException when the login mechanism configured for the Se

javaee.github.io

 

관련 API

package servlet;


import java.io.IOException;

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("/ServletTest")
public class ServletTest extends HttpServlet {
	private static final long serialVersionUID = 1L;


	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
	    throws ServletException, IOException {
		System.out.println(request);

		request.setCharacterEncoding("utf-8");
		System.out.println("getCharacterEncoding(): " + request.getCharacterEncoding());

		System.out.println("getContextPath(): " + request.getContextPath());

		System.out.println("getHeader(): " + request.getHeader(getServletName()));

		System.out.println("getRequestURI(): " + request.getRequestURI());

		System.out.println("getRequestURL(): " + request.getRequestURL());

		System.out.println("getCookies(): " + request.getCookies());

		System.out.println("getServletPath(): " + request.getServletPath());

		System.out.println("getServletContext(): " + request.getServletContext());

		System.out.println("getSession(): " + request.getSession());
	}


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

}

출력

 

 

 HttpServletResponse 

API Summary

https://javaee.github.io/javaee-spec/javadocs/index.html?help-doc.html 

 

Java(TM) EE 8 Specification APIs

 

javaee.github.io

 

관련 API

package servlet;


import java.io.IOException;

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("/ServletResponseTest")
public class ServletResponseTest extends HttpServlet {
	private static final long serialVersionUID = 1L;


	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
	    throws ServletException, IOException {
		System.out.println(response);

		response.setContentType("text/html; charset=utf-8");
		System.out.println("getCharacterEncoding(): " + response.getCharacterEncoding());

		System.out.println("getStatus(): " + response.getStatus());

		System.out.println("getWriter(): " + response.getWriter());
		System.out.println(response.getWriter().append("hi"));
	}


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

}

출력

 

 

 HttpSession 

API Summary

https://javaee.github.io/javaee-spec/javadocs/javax/servlet/http/HttpSession.html

 

HttpSession (Java(TM) EE 8 Specification APIs)

Provides a way to identify a user across more than one page request or visit to a Web site and to store information about that user. The servlet container uses this interface to create a session between an HTTP client and an HTTP server. The session persis

javaee.github.io

 

API 설명

둘 이상의 페이지 요청 또는 웹 사이트 방문에서 사용자를 식별하고, 해당 사용자의 정보를 저장하는 방법을 제공합니다.

Servlet Container(WAS) 은 해당 인터페이스를 사용하여 클라이언트와 서버간의 세션을 생성합니다.

Session 은 특정 기간까지 지속될 수 있습니다. 이러한 세션은 일반적으로 사이트에 여러 번 방문할 수 있는 사용자에 해당합니다.

이러한 세션을 서버는 쿠키나 URL 을 다시 작성하는 등의 다양한 방법으로 유지될 수 있습니다.

세션 식별자, 생성 시간 및 마지막 접근 시간 등과 같은 데이터를 바인딩하여 사용자 정보를 유지할 수 있습니다.

 

 

 

 ServletContext 

API Summary

https://docs.oracle.com/javaee/7/api/javax/servlet/ServletContext.html

 

ServletContext (Java(TM) EE 7 Specification APIs)

Gets the class loader of the web application represented by this ServletContext. If a security manager exists, and the caller's class loader is not the same as, or an ancestor of the requested class loader, then the security manager's checkPermission metho

docs.oracle.com

 

API 설명

예를 들어, 파일의 MIME 유형을 가져오거나 요청을 발송할 때, 혹은 로그 파일을 쓰기 위하여 Servlet 이 해당 Servlet Container 와 통신하는 데 사용하는 메서드를 정의합니다.

JVM 당, 웹 애플리케이션 당 하나의 Context 가 있습니다.

이러한 Context 은 글로벌 정보를 공유하는 위치로 사용될 수 없습니다. (대신 DB와 같은 외부 리소스를 사용)

ServletContext 객체는 ServletConfig 객체 내에 포함 됩니다.

 

 

 

 

 

 

 

 

 

 


 

728x90

'🧶 𝗪𝗲𝗯 > Servlet' 카테고리의 다른 글

[Servlet] JSP 사용에서 MVC 패턴  (0) 2022.10.04
[Servlet] URL 매핑  (1) 2022.10.04
[Servlet] forward, sendRedirect  (1) 2022.10.04
[Servlet] Life Cycle  (1) 2022.10.04