JSP

[JSP] - doGet, doPost

shb 2022. 3. 22. 18:24

웹컨테이너(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