본문 바로가기

JSP

[JSP] Form 태그로 Get, Post 메서드 사용해보기

Servlet은 JAVA 언어를 사용하여 웹 프로그램을 제작하는 것이다.

간단한 Servlet 프로젝트를 만들어 보면서 전체적인 구조(흐름)을 살펴보겠다.

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
                      // 요청처리 객체             // 응답처리 객체

 

Servlet 클래스는 HttpServlet 클래스를 상속 받는다.

요청처리 객체 및 응답처리 객체를 톰캣 서버에서 받는다.

 

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

 

클라이언트에게 보여줄 때는 html로 보여준다.

 

PrintWriter out = response.getWriter();

 

웹 브라우저에 출력하기 위한 스트림

서블릿 파일은 자바파일 이기 때문에 출력스트림을 이용해서 html 코드를 직접 뿌려준다.

JSP는 기본적으로 html 파일이기 때문에 서블릿과는 조금 다르다.

 

out.println("<HTML>");
out.println("<HEAD><TITLE>현재시간</TITLE></HEAD>");
out.println("<BODY>");
out.println("오늘 날짜는");
out.println(nowDt);
out.println("입니다.");
out.println("</BODY>");
out.println("</HTML>");

 

그냥 html임...

 

 

클라이언트가 로그인 정보를 입력하여 로그인 버튼을 누르면 request 객체에 담겨서 서버로 넘어간다.

그럼, 서버는 DB를 참조하여 로그인 여부를 결정해서 그 정보를 response 객체에 담아서 넘겨준다.

 

클라이언트의 요청이 들어오면 서버에서 요청을 받아서 처리한다.

여기서 중요한 것은 요청처리객체 및 응답처리객체는 톰캣 서버가 직접 생성해주는 것이다.

 

 

GET & POST 방식

GET 방식

<form method 속성값 = get>
</form>

 

URL 값으로 정보가 전송되어 보안에 약함

URL 경로 뒤, 물음표(?)와 함께 파라미터를 붙여 전송함.

이것을 쿼리문자열 이라고 한다. 쿼리문자열은 각각의 파라미터를 &로 구분한다.

 

 

POST 방식

<form method 속성값 = post>
</form>

 

header를 이용해 정보가 전송되어 보안에 강함

 

 

클라이언트 HTML에서 form 태그를 이용하여 ID, PW등을 보낼 때 보내는 방식에는 GET방식과 POST 방식이 있다.

그것에 따라 서블릿의 메서드가 호출되는 것이다.

 

 

 

doGet( )

html 내 form 태그의 method 속성이 get일 경우 호출 된다.

웹 브라우저의 주소창을 이용하여 servlet을 요청한 경우에도 호출 된다.

doGet 메서드는 매개변수로 HttpServletRequest와 HttpServletResponse를 받는다.(톰캣 서버가 자동 생성해줌)

 

HttpServletResponse 객체의 setContentType( ) 메서드를 호출하여 응답방식을 결정한다.

HttpServletResponse 객체의 getWriter( ) 메서드를 이용하여 출력 스트림을 얻는다.

출력 스트림의 println( ) 메서드를 이용하여 출력하면, 웹 브라우저에 출력 된다.

 

 

doPost( )

html 내 form 태그의 method 속성이 post일 경우 호출 된다.

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Form 태그</title>
</head>
<body>
    <!-- form 태그를 이용하여 GetorPost.java 파일에 있는 doGet() 메서드를 직접 호출한다. -->
	<form method="get" action="GetorPost">
	<!-- 입력 타입 submit은 전송의 의미로 버튼이 나타나고 전송이라는 문자열이 적힌다.-->		
		<input type = "submit" value="전송">
	</form>

</body>
</html>

 

지금은 눌러도 GetorPost.java가 만들어져 있지 않기 때문에 404가 뜬다.

그렇다면  GetorPost을 받는 클래스를 만들어주자!

이제 전송버튼을 누른다면 매핑이 되어있는 /GetorPost로 이동할 것이다!

@WebServlet("/GetorPost")
public class GetorPostServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
  
    public GetorPostServlet() {
        super();
    }

	
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet() 메서드 호출");
		response.setContentType("text/html; charset = utf-8"); 
		// 출력 스트림을 얻는다.
		PrintWriter out = response.getWriter();
		
		out.println("안녕하세요");
		out.println("<HTML>");
		out.println("<HEAD>");
		out.println("</HEAD>");
		out.println("<BODY>");
		out.println("<H1>doGet 방식입니다. 반갑습니다!</H1>");
		out.println("</BODY>");
		out.println("</HTML>");
		out.close();
	}

	
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doPost() 메서드 호출");
		response.setContentType("text/html; charset = utf-8"); 
		// 출력 스트림을 얻는다.
		PrintWriter out = response.getWriter();
		
		out.println("안녕하세요");
		out.println("<HTML>");
		out.println("<HEAD>");
		out.println("</HEAD>");
		out.println("<BODY>");
		out.println("<H1>doPost 방식입니다. 반갑습니다!</H1>");
		out.println("</BODY>");
		out.println("</HTML>");
		out.close();
	}
}

POST 방식으로 하고 싶다면 html의 method 속성을 post로 바꾸면 된다.

 

'JSP' 카테고리의 다른 글

[JSP] Servlet 파라미터 값 받기  (0) 2024.05.09
[JSP] Servlet  (0) 2024.05.09
[JSP] JSP 특징, 동작 원리  (0) 2024.05.09