JSP

get 방시과 post 방식

다음은 인터넷에서 회원 가입을 할 때 흔히 볼 수 있는 화면입니다. 아래와 같이 화면은 HTML 에서 <form> 태그를 통해서 구현됩니다.

 

 클라이언트의 브라우저에서 사용자로부터 다양한 정보를 입력받기 위해서 <form> 태그가 사용됩니다. 폼에 입력된 데이터를 서블릿 컨테이너가 받아와서 처리하는 서블릿 프로그램을 작성해 봅시다.

 

 서블릿에서 폼에 입력된 데이터를 어떻게 처리하는지 그 방법을 학습하기 위해서 우선적으로 폼 관련 태그들을 알아보겠습니다. 다음은 <form> 태그의 기본형식입니다.

 

- 형식 : <form> 태그의 기본 형식

<form method="get/post" action ="호출할 서블릿">

<form> 태그에 사용된 주요 속성은 method와 action 입니다.

속성 설명
method

어떤 방식으로 데이터를 넘겨 줄 것인지를 결정한다.

get과 post 방식 중에서 하나를 선택한다.

post 는 사용자가 입력한 내용을 발송할 때 그 내용을 공개하지 않는다.

get 은 사용자가 입력한 결과를 알 수 있도록 내용을 공개한다.

action

전송(submit) 버튼을 누르면 action 속성 다음에 기술한 URL 에 지정한 파일로 이동한다.

<form> 태그에 포함된 입력 양식에 내용을 입력하거나 선택사항을 선택하였다면 이들 내용이 서버에서 처리되어야 합니다. 웹 서버에 의해 처리될 수 있도록 <form> 태그의 action 속성에 이동할 서블릿을 기술합니다. 다음은 <form> 태그에 포함된 입력 양식에 입력한 데이터를 서블릿이 처리하도록 한 예제입니다.

- 서블릿을 get 방식으로 요청한 예

<form method="get" action="MethodServlet" >

 위 예는 get 방식으로 서블릿을 호출하기 때문에 서블릿 클래스의 doGet() 메소드가 호출됩니다. <form> 태그만으로 action 속성에 기술된 서블릿으로 데이터를 전송하기 위해서는 전송(submit) 버튼이 클릭되어야 합니다. 전송 버튼은 HTML 의 <input> 태그의 type 을  "submit" 으로 지정하여 만듭니다.

- 전송(submit) 버튼 만들기의 예

<input type="submit" value="전송">

 input 태그의 type 속성값을 "submit" 으로 지정하면 버튼 형태로 출력됩니다. 버튼 위에 나타날 값은 value 속성에 지정합니다. [전송] 버튼이 만들어지고 이 버튼을 클릭하면 <form>  태그의  action 속성에 기술한 서블릿이 요청되어 처리됩니다.

 입력한 내용을 취소하고자 할 때에는 취소(reset) 버튼이 사용됩니다. 취소 버튼을 누르면 데이터를 다시 입력할 수 있도록 이전에 입력한 내용을 깨끗이 지웁니다.

 

- 취소(reset) 버튼 만들기의 예

<input type="reset" value="취소">

 

전송방식을 get과 post로 하는 <form> 태그를 2개 만들어 서블릿 객체의 doGet() 과 doPost() 가 각각 개별적으로 호출되는 예제를 작성해 보겠습니다. 다음은 만들어 볼 예제의 간단한 실행원리입니다.

[get 방식으로 호출하기] 전송 버튼을 클릭하면 서블릿 내에 doGet() 메소드가 호출되고

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

  response.setContentType("text/html; charset=UTF-8");

  PrintWriter out =response.getWriter();

 out.print("<h1>get  방식으로 처리됨 </h1>");

 out.close();

}

 

[post 방식으로 호출하기 ] 전송 버튼을 클릭하면 서블릿 내에 doPost() 메소드가 호출되도록 프로그램을 작성해 보겠습니다.

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

  response.setContentType("text/html; charset=UTF-8");

  PrintWriter out =response.getWriter();

  out.print("<h1>post 방식으로 처리됨 </h1>");

  out.close();

}

다음은 이번 예제에서 작성할 파일들을 정리한 표입니다.

파일 이름 설명
04_method.jsp get 방식 전송 버튼과 post 방식 전송 버튼이 있다.
MethodServlet.java 어떤 전송 버튼을 눌렀느냐에 따라서 doGet 혹은 doPost 메소드가 호출된다.

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>서블릿</title>
</head>
<body>

<form method="get" action="MethodServlet">
    <input type="submit" value="get 방식으로 호출하기" >
</form>

<br><br>

<form action="MethodServlet" method="post">
 <input type="submit" value="post 방식으로 호출하기" >
</form>


</body>
</html>
 

 

package unit03;

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;

/**
 * Servlet implementation class MethodServlet
 */
@WebServlet("/MethodServlet")
public class MethodServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public MethodServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        
        
        response.setContentType("text/html; charset=UTF-8");
        PrintWriter out =response.getWriter();
        out.print("<h1>get 방식으로 처리됨</h1>");
        out.close();
    }

    
    
    
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        
        response.setContentType("text/html;  charset=UTF-8"); 
        PrintWriter out =response.getWriter();
        out.println("<h1>post 방식으로 처리됨 </h1>");
        out.close();
    }

}

 

 

 

 

about author

PHRASE

Level 1  머나먼나라

댓글 ( 4)

댓글 남기기

작성