• [JSP] form 형태 태그의 데이터 처리 방식과 doGet(), doPost() 방식의 특징 정리하기

    2023. 1. 19.

    by. 김홍원

    JSP의 doGet()과 doPost()는 어떤 차이점을 보이는 것일까 ? 

    2가지의 메서드는 데이터 전송 방식에서의 차이점을 보인다.

     

    doGet의 경우에는 key-value값들을 모두 알려주기 때문에 보안에 취약하다 

     

    doPost 방식의 경우에는 servlet을 만들 때 나오던 맵핑만 나오기 때문에 보안에 강해서 설문조사 등에서 많이 사용한다. 

     

    defalut값이 doGet방식이기 때문에 doPost로 보안에 신경써야할 경우 doPost로 바꿔서 URL에 정보가 나오지 않도록 해야한다 . 

     

    주로 form태그를 사용해서 로그인이나 회원가입 등 데이터를 주고 받는 과정을 많이 하는데 

    form태그에서 action과 method라는 속성을 사용해서 @webServlet과 get 또는 post 방식에 따라서 doGet이나 doPost메서드를 사용할 수 있다.

     

    예시문을 만들어보자.

     

    <form action = "NaverSignUp" method="post">

       name:<input type=text" name="Naver_name"></br>

       password: <input type="password" name=Naver_password>

     </form>

     

    에서 action의 NaverSignUp이라는 @webServlet을 만들어서 URL에 맵핑한 것만 표시하게 하고

     

    method값이 post이므로 doPost()로request와 response를 받아서 구현한다.

     

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

       System.out.println("==doPost()==");

       doGet(request, response);

     

    이때 doGet(request, response)를 입력하면 doGet()메서드의 코드량을 doPost에서 받아서 코드를 한쪽으로 몰아서 사용하기에 이 방식을 많이 사용한다. 

     

    doPost()로 받은 doGet()함수의 요청과 응답을 doGet()메서드로 올려서 한 쪽에서 구현코드로 출력할 수 있다.

     

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

     

    System.out.println("==doGet()==");

     

    String Naver_name = request.getParameter("Naver_name");

    String Naver_Password = request.getParameter("Naver_PassWord");

     

     

    //request라는 객체에 서버로 요청을 받아들여온 정보가 저장되는 것이다. // 

    .

    System.out.println("Naver_name: " + Naver_name);

    System.out.println("Naver_password: " + Naver_password);

     

    Enumeration<String> names = request.getParameterNames();

    while (names.hasMoreElements()) {

       String name = (String) names.nextElement();

        System.out.println("name: " + name);   

      }

     

    으로 method 방식을 post로 받은 후 URL의 보안과 doGet으로의 정보를 모는 방식으로 많이 사용한다 . 

     

    doGet에서 getParameter(), getParameterValues(), getParameterNames() 메서드를 사용할 수 있는데 

    매개변수를 얻거나 여러개의 매개변수를 받는 경우, 각 속성들의 이름을 받아주는 메서드를 순서대로 표현한다.

    getParameterValues() 메서드의 경우에는 여러가지 값들이 있는 경우, 즉 관심사 등을 표시할 때 사용하며 배열을 사용한다.

    예를 들어서 String[] Naver_favor = request.getParamaterValues("Naver_favor");

    로 복수의 요청을 받을 수도 있다.

     

     

    댓글