get과 post의 차이점
Servlet 데이터 통신 방식 | |
GET | POST |
<a>, <form>, <location.href> 사용가능 | <form>에서만 사용가능. |
전송할 때 입력결과를 URL 뒤에 name=value 형태로 전송하고, 여러 개일때는 '&'으로 연결한다. | 전송할 때 입력결과가 TCP/IP Protocal의 HEAD 영역에 숨겨진 채 전송한다. |
전송 데이터는 최대 255자 | 전송데이터는 무제한 |
Servlet의 doGet() 호출한다 | Servlet의 doPost()를 호출한다 |
default 전송방식이며, 보안에 취약하다 |
처리속도가 GET 방식보다 느리고, 보안에 유리하다. |
Web에서 Web으로 입력값 전달하기
html 예시
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>IO Test</h1>
<form action="test" method="get">
<textarea name="text" rows="5" cols="30">
</textarea><br>
<input type="submit" value="get제출">
</form>
<form action="test" method="post">
<textarea name="text" rows="5" cols="30">
</textarea><br>
<input type="submit" value="post제출">
</form>
</body>
</html>
Java 예시
package sample2;
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("/test")
public class Test extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html; charset=UTF-8");
String text = req.getParameter("text");
PrintWriter pw = resp.getWriter();
pw.println("<html>");
pw.println("<head>");
pw.println("<title>제목</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<h1>GET 방식</h1>");
pw.println("<p>"+ text+"</p>");
pw.println("</body>");
pw.println("</html>");
pw.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html; charset=UTF-8");
String text = req.getParameter("text");
PrintWriter pw = resp.getWriter();
pw.println("<html>");
pw.println("<head>");
pw.println("<title>제목</title>");
pw.println("</head>");
pw.println("<body>");
pw.println("<h1>POST 방식</h1>");
pw.println("<p>"+ text+"</p>");
pw.println("</body>");
pw.println("</html>");
pw.close();
}
}
설명
웹에서 웹으로 출력시, html문서의 구조를 그대로 작성해주어야한다.
@WebServlet("/url")
@WebServlet("/test")에 test는 html는 form tag의 url이다.
web.xml문서없이 Servlet실행이 가능하다.
HttpServletRequest
웹브라우저가 요청할 때 정보를 가져오는 객체
HttpServletResponse
웹브라우저에게 응답을 하기위한 객체
HttpServletRequest.setContentType(" ")
메소드 안의 문자열은 출력될 html의 인코딩 방식을 지정한다.
HttpServletRequest.getParameter("name명")
html의 name명을 작성할 시 해당tag의 value을 얻어온다.
HttpServletResponse.getWriter()
쓰기를 통해 응답을 하는 메서드
HttpServletRequest.setCharacterEncoding("utf-8")
입력된 데이터의 인코딩을 UTF-8로 변경한다.
Post방식은 위 메소드가 있어야 한글이 깨지지 않는다.
실행화면
'IT > Servlet' 카테고리의 다른 글
[Servlet] session이란? (0) | 2021.06.13 |
---|---|
[Servlet] sendRedirect과 forward의 차이점 / forward 사용예시 (0) | 2021.06.13 |
[Servlet] Servlet기초 : console에서 java메소드 실행시키기 / Java Servlet의 조건사항 (0) | 2021.06.11 |
[Servlet]Servlet이란? web.xml파일 생성하기(이클립스) (0) | 2021.06.11 |