웹컨테이너(tomcat) 에서는 위 클래스 ServletDemo 의 instance를 만들어
그 서블릿 객체를 초기화 작업을 합니다. ( init() 메소드 )
main() 메소드가 없어도 동작하는 이유는, 웹서버 엔진(톰캣)에서 main()이 작동하기 때문.
* 서블릿 클래스 상속 구조
Servlet 인터페이스
|
GenericServlet 추상클래스
|
HttpServlet 클래스
|
서블릿 클래스
* Servlet 에 대해
Servlet interface를 implements하여 생성한 자바 클래스
서블릿은 서블릿 엔진에 의해 동작을 하며 여러 사용자에 의해 호출될 수 있다. (multi thread !)
서블릿의 인스턴스는 재활용 가능하다. (한번만 생성되면 된다!)
* 서블릿 작성 규칙
. 서블릿 javax.servlet.http.HttpServlet 클래스를 상속해야한다.
. doGet 또는 doPost 메서드 안에 클라이언트의 요청이 왔을 때 처리해야 할 일들을 기술
. HTML 문서를 출력하는데 있어서, doGet이나 doPost 메서드의 두번째 인자(response)를 이용
* HttpServletRequest : 사용자(클라이언트) 의 정보를 서블릿 엔진에 전달하는 객체
. 파라미터의 이름과 값
. input type 의 데이터
. header 정보
. 사용자 컴퓨터 이름
. 요청받는 서버의 이름
. 쿠키
. 메소드 : getParameterValues(), getParameter(), getRemoteHost(), getServerName()
* HttpServletResponse : 서버에서 만든 응답을 암호화해서 사용자에게 전달하는 객체
. 응답으로 사용되는 content의 길이
. 응답으로 사용되는 content의 타입, 화면에 출력해야 할 모든 값
. 메소드 : setContentType(String type), setContentLength(int length), getWriter()
. redirect 동작
Servlet & <form>
* doGet메소드의 호출 : html <form> 태그에서 method=get일 때 호출,
URL 주소창에서 servlet url을 입력했을 때도 호출
* doPost메소드의 호출 : html <form> 태그에서 method=post 일 때 호출
* throws 절에 있는 ServletException과 IOException은 생략이 가능
* doGet() / response 하기 기본
package com.lec.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("/Sev")
public class ServletDemo extends HttpServlet {
private static final long serialVersionUID = 1L;
public ServletDemo() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet() 호출");
int sum = 0;
for(int cnt = 1; cnt <= 100; cnt++) {
sum += cnt;
}
response.setContentType("text/html; charset=utf-8");
PrintWriter out = response.getWriter(); // response 에 출력할 스트림을 얻어온다
out.println("<html>");
out.println("<head>");
out.println("<title>백까지 합</title>");
out.println("</head>");
out.println("<body>");
out.printf("100까지의 합 결과 : %d", sum);
out.println("</body>");
out.println("</html>");
out.flush();
out.close();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost() 호출");
doGet(request, response);
}
@Override
protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doDelete() 호출");
super.doDelete(req, resp);
}
@Override
protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doPut() 호출");
super.doPut(req, resp);
}
'JSP' 카테고리의 다른 글
[JSP] 내부객체 (0) | 2022.03.24 |
---|---|
[JSP] 태그, 지시자 (0) | 2022.03.24 |
[JSP] Form 태그를 이용한 서블릿 처리 (0) | 2022.03.24 |
[JSP] - 서블릿 (0) | 2022.03.22 |
[JSP] - 파일생성, 동작 과정 (0) | 2022.03.22 |