ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 서블릿의 doPost,doGet,Init,sevice 함수
    JAVA/웹 프로그래밍 - 서블릿 2020. 11. 3. 22:33

     

    서블릿 파일을 생성할 시에, constructors form superclass만 체크 해제를 하고

    doPost, doGet, Init, sevice함수 4개를 체크한다.

    그리고 서블릿 파일에 생성되면 doPost함수와 doGet함수의 내부는 모두 지운다. 

    그리고 주석을 모두 제거한다.

     

    서블릿의 동작은 init함수가 호출되고  init함수는 서블릿이 최초에 실행될 때만 딱 한 번만 호출된다.
    그리고 나서 service함수가 호출된다.

    다시 service함수가 doGet 혹은 doPost함수를 호출하게 되어있다.
    html에서 method방식은 post와 get방식이 있다. 서블릿의 service함수에서 보는 것이 가능하다.

     

    service함수에서 볼 수 있는지 알아보자.

    ServletTest.java 서블릿 파일 내용

    더보기
    package com.iot.web;
    
    import java.io.IOException;
    import javax.servlet.ServletConfig;
    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;
    
    	public void init(ServletConfig config) throws ServletException 
    	{
    		System.out.println("Init 함수 호출");
    	}
    
    	protected void service(HttpServletRequest request, 
    			HttpServletResponse response) throws ServletException, IOException 
    	{	
    		System.out.println("service 함수 호출");
    		
    		if (request.getMethod().equals("GET"))
    		{
    			System.out.println("GET 함수 요청");
    		}
    		else if (request.getMethod().equals("POST"))
    		{
    			System.out.println("POST 함수 요청");
    		}
    	}
    
    	protected void doGet(HttpServletRequest request, 
    			HttpServletResponse response) throws ServletException, IOException 
    	{
    		System.out.println("doGet 함수 실행");
    	}
    
    	protected void doPost(HttpServletRequest request, 
    			HttpServletResponse response) throws ServletException, IOException 
    	{
    		System.out.println("doPost 함수 실행");
    	}
    }

     

    그리고 이 서블릿 파일을 실행하고 자바의 콘솔 창을 확인하자.


    위의 실행결과에서 doGet함수가 호출이 안된 이유는 한 문장이 빠져서 그렇다. 

    super.service(request, response); 를 service함수에서 호출하면 된다.

     

    ServletTest.java

    더보기
    package com.iot.web;
    
    import java.io.IOException;
    import javax.servlet.ServletConfig;
    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;
    
    	public void init(ServletConfig config) throws ServletException 
    	{
    		System.out.println("Init 함수 호출");
    	}
    
    	protected void service(HttpServletRequest request, 
    			HttpServletResponse response) throws ServletException, IOException 
    	{	
    		System.out.println("service 함수 호출");
    		
    		if (request.getMethod().equals("GET"))
    		{
    			System.out.println("GET 함수 요청");
    		}
    		else if (request.getMethod().equals("POST"))
    		{
    			System.out.println("POST 함수 요청");
    		}
    		super.service(request, response);
    	}
    
    	protected void doGet(HttpServletRequest request, 
    			HttpServletResponse response) throws ServletException, IOException 
    	{
    		System.out.println("doGet 함수 실행");
    	}
    
    	protected void doPost(HttpServletRequest request, 
    			HttpServletResponse response) throws ServletException, IOException 
    	{
    		System.out.println("doPost 함수 실행");
    	}
    }

     

    아래와 같이 콘솔 창에 doGet함수가 호출됨을 볼 수 있다.

     

    doPost함수가 호출이 되게 하려면 html파일을 하나 만들어야 한다.

    html파일의 이름을 ServletTest라고 짓고 내용은 아래와 같다.

    ServletTest.html 파일 내용

    더보기
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    	<form action="ServletTest" method="get">
    		<input type="submit" value="전송">
    	</form>
    </body>
    </html>

     

    위의 html파일에서 method방식을 get과 post를 번갈아 적어가면서 html 파일을 실행하고

    전송 버튼을 누른 후에 자바 console창을 보자.

    아래와 같이 post 방식으로 변경하면 doPost함수가 호출됨을 볼 수 있다.

     

    'JAVA > 웹 프로그래밍 - 서블릿' 카테고리의 다른 글

    RequestDispatcher  (0) 2020.11.03
    Cookie  (0) 2020.11.02
    HttpSession  (0) 2020.11.02
    ServletContext  (0) 2020.11.01
    웹 브라우저에서 수의 덧셈을하고 출력하기  (0) 2020.11.01

    댓글

Designed by Tistory.