본문 바로가기

서버/Servlet-JSP
Servlet-JSP GET 방식, POST 방식

// GET 방식
    - 데이터를 URL에 붙여서 전송 > 인코딩 규칙: URL 규칙에 따름 > 보안에 약함

    1. <form method="GET">
    2. XMLHttpRequest(Ajax)  
    3. <a href="">
    4. location.href
    5. F5(새로고침)
    6. URL 직접 입력


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="calculator" method="get">
		<input type="submit" value="요청">
	</form>
</body>
</html>

 

package com.sorrelcalc.web;

import java.io.IOException;

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("/calculator")
public class Calculator extends HttpServlet{
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		if(req.getMethod().equals("GET")) { // html <body> <form method>가 get? (대문자 사용 필수)
			System.out.println("GET 요청이 왔습니다.");
		}
		
	}
}

// doGet()

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

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

- 매개변수로 HttpServletRequest와 HttpServletResponse를 받는다.

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

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


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

PrintWriter writer = response.getWriter();


- 출력 스트림의 println() 메서드를 이용하여 웹브라우저에 원하는 내용을 출력한다.

writer.println("<html>");
writer.println("<head>");
writer.println("<meta charset='UTF-8'>");
writer.println("</head>");
writer.println("<h1>데이터 보내기</h1>");
writer.println("<form method='GET' action='/servlet/ex04ok'>");
writer.println("<div>이름: <input type='text' name='name'></div>");
writer.println("<div></div>");
writer.println("<div></div>");
writer.println("<div><input type='submit' value='보내기'></div>");
writer.println("</form>");

writer.println("<a href='/servlet/ex04ok?name=hong'>Ok 페이지</a>");

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="calculator" method="get">
		<input type="submit" value="요청">
	</form>
</body>
</html>

 

package com.sorrelcalc.web;

import java.io.IOException;

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("/calculator")
public class Calculator extends HttpServlet{
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("doGET메서드가 호출되었습니다.");
	}
    
}

// POST 방식
    - 데이터를 패킷(header)에 넣어서 전송 > 인코딩 규칙: 인터넷 규칙에 따름 > 보안에 강함

    1. <form method="POST">
    2. XMLHttpRequest(Ajax)


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="calculator" method="post">
		<input type="submit" value="요청">
	</form>
</body>
</html>

 

package com.sorrelcalc.web;

import java.io.IOException;

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("/calculator")
public class Calculator extends HttpServlet{
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		if(req.getMethod().equals("POST")) {  // post? (대문자 사용 필수)
			System.out.println("POST 요청이 왔습니다.");
		}
		
	}
}

// doPost()

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

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

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


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

PrintWriter writer = response.getWriter();

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="calculator" method="post">
		<input type="submit" value="요청">
	</form>
</body>
</html>

 

package com.sorrelcalc.web;

import java.io.IOException;

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("/calculator")
public class Calculator extends HttpServlet{
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("doPOST메서드가 호출되었습니다.");
	}
}

'서버 > Servlet-JSP' 카테고리의 다른 글

Servlet Parameter  (0) 2022.12.30
Servlet 생명주기  (0) 2022.12.29
이클립스로 Servlet 프로그래밍 시작  (0) 2022.12.24
메모장으로 Servlet 프로그램 만들기  (0) 2022.12.22
Servlet, JSP  (0) 2022.12.22