GET/POST 전송 방식
GET 방식은 URL 주소에 데이터를 붙여서 전송하는데, 로그인창에서 ID와 비밀번호 같은 개인 정보가 함께 전송되면 데이터가 노출될 수 있어 보안에 취약하다. 즉, 보안과 관련 없는 간단한 데이터를 쉽게 전송할 수 있다.
POST 방식은 전송하는 데이터를 숨겨서 전송하기 때문에 보안성이 좋다.
GET 방식 | POST 방식 |
- 서블릿에 데이터를 전송할 때는 데이터가 URL 뒤에 name=value 형태로 전송된다. - 여러 개의 데이터를 전송할 때는 '&'로 구분해서 전송된다. - 보안이 취약하다. - 전송할 수 있는 데이터는 최대 255자이다. - 기본 전송 방식이고 사용이 쉽다. - 웹 브라우저에 직접 입력해서 전송할 수도 있다. - 서블릿에서는 doGet()을 이용해 데이터를 처리한다. |
- 서블릿에 데이터를 전송할 때는 TCP/IP 프로토콜 데이터의 body 영역에 숨겨진 채 전송된다. - 보안에 유리하다. - 전송 데이터 용량이 무제한이다. - 전송 시 서블릿에서는 또 다시 가져오는 작업을 해야 하므로 처리 속도가 GET 방식보다 느리다. - 서블릿에서는 doPost()를 이용해 데이터를 처리한다. |
GET 방식으로 서블릿에 요청
<form name="frmLogin" method="get" action="login" encType="UTF-8"></form>
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {}
POST 방식으로 서블릿에 요청
<form name="frmLogin" method="post" action="login" encType="UTF-8"></form>
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {}
GET 방식과 POST 방식 요청 동시에 처리
<form name="frmLogin" method="get" action="login" encType="UTF-8"></form>
<form name="frmLogin" method="post" action="login" encType="UTF-8"></form>
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
public void init() throws ServletException {
System.out.println("init 메서드 호출");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet 메서드 호출");
doHandle(request, response); // GET 방식으로 요청 시 다시 doHandle() 호출
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost 메서드 호출");
doHandle(request, response); // POST 방식으로 요청 시 다시 doHandle() 호출
}
// 모든 호출 방식에 대해 처리
private void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
System.out.println("doHandle 메서드 호출");
String user_id = request.getParameter("user_id");
String user_pw = request.getParameter("user_pw");
System.out.println("아이디:" + user_id);
System.out.println("비밀번호:" + user_pw);
}
public void destroy() {
System.out.println("destroy 메서드 호출");
}
}
'Web > Servlet, Jsp' 카테고리의 다른 글
[Servlet] 서블릿의 응답(Response)과 요청(Request) (0) | 2021.09.16 |
---|---|
[Servlet] 서블릿(Servlet)이란? (0) | 2021.09.15 |