-
입력할 내용이 많은 경우는 POST 요청Servlet-JSP 2022. 1. 8. 15:14
일상 생활을 할 때에 누군가가 많은 것을 얘기하면 우리는 일반적으로 포스트잇이나 종이에 그것들을 적어서 기록 한다.
웹 어플리케이션을 만들때에도 많은 요청사항이 들어오게 되면 POST 방식으로 요청을 하게 된다.
게시글을 입력하거나 할 때 입력 할 것이 많다고 하면 한번에 GET 요청으로 처리 할 수 없다. 우선 입력폼을 받기 위한 GET 요청을 하고 그 결과를 가지고 POST 요청을 하게 되는 것이다.
오늘은 POST 요청에 대해 알아보도록 하자우선 화면에 보여질 view 페이지를 만들고
<body> <div> <form action="notice-reg"> <!-- notice-reg를 받을 servlet이 필요하다 --> <div> <label>제목 : </label> <input type="text" name="title"> </div> <div> <label>내용 : </label> <textarea name="content"></textarea> </div> <div> <button type="submit">등록</button> </div> </form> </div> </body>서블릿 페이지를 만들어준다.
@WebServlet("/notice-reg") public class NoticeReg extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=utf-8"); PrintWriter out = response.getWriter(); String title = request.getParameter("title"); String content = request.getParameter("content"); //DB를 연결 했다면 이 값을 DB에 저장 하거나 해야하는데 아직 DB 연결을 안했으니깐 //일단 그냥 반환만 해주자 //내용을 잘 받았다 이것이 맞니? 하고 돌려 주는 것. out.println(title); out.println(content);
그럼 이렇게 작동 하는 것을 확인 할 수 있다.
지금처럼 이렇게 짧은 글자수이면 url 창에 다 입력이 된다.
하지만 엄청나게 긴 문장이나 url 창에 사용 할 수 없는 특수문자를 사용하게 될 경우에는 url에 길이가 제한이 있어서 우리가 쓰고자 하는 내용을 전부 url에 붙이기에는 문제가 있다.
그리고 쿼리스트링이라는 것은 반환해달라고 하는 것이 문서라고 하면 이 반환해달라는 문서에 대한 옵션값을 쿼리스트링이라고 할 수 있다. 장문의 내용을 쿼리스트링으로 보내는 것은 올바른 방법이 아니다.
그래서 이러한 것을 해결하는 방법으로는 form action 뒤에 method를 지정해주고 그것을 POST나 GET으로 지정 해 주는 방법이 있다.
method를 작성하게 되면 문서를 받아서 사용자가 입력한 값을 제출 하게 되는 것인데 입력 값이 많기 때문에 url로 전달하는 것이 아니라 요청 바디에 붙어서 전달하게 되는 것이다.


이렇게 해 주면 url창에 아무것도 나타나지 않는다. 쿼리스트링이 아니라 바디쪽에 붙어서 제출 된 것이다.
F12를 눌러서 개발자 환경 ->NETWORK에서 요청 시 사용한 내용들을 확인 할 수 있다.
이제 주소창으로 내용이 전달 되는 것이 아니라 바디로 전달 되는 것을 확인 할 수 있고
그럼 앞으로 많은 내용도 전달이 가능하게 되는 것이다.
POST를 이용하는 이유에는 보안상에서도 사용하기도 하다.
예를 들면 회원가입등을 할 때에는 비밀번호등 개인정보가 있기 때문에 POST로 입력한다.
근데 좀전에 영어로 입력했을때는 글자가 깨지지 않았는데 맨 앞에 한글 몇글자는 글자가 깨지는 것을 볼 수 있다.
request.setCharacterEncoding("UTF-8");요청 받기 전 위치에 이렇게 UTF-8로 변환하는 코드를 삽입해주면

한글이 깨지지 않고 출력 되는 것을 확인 할 수 있다.
'Servlet-JSP' 카테고리의 다른 글
서블릿 사용자로부터 값을 받아 계산해보기 (0) 2022.01.13 서블릿필터 ServletFilter (0) 2022.01.12 사용자 입력을 통한 GET 요청하기 (0) 2022.01.08 GET 요청과 쿼리 스트링 (0) 2022.01.08 한글과 콘텐츠 형식 출력하기 (0) 2022.01.07