초록꼬마의 devlog
article thumbnail

2021.12.30(목)

🌿 JSP

🌱 post 방식 요청 및 응답 test

  • 특징
  1. post 방식으로 요청하는 건 HTTP message의 body 영역에 데이터를 포함시켜서 요청 -> 사용자가 입력한 값/데이터가 url에 노출되지 않음 -> 보안 유지 가능 -> 로그인, 회원 가입 등의 경우 post 방식이 적합함
  2. body 영역은 전송하는 길이에 제약이 없음(더 정확하게 말하자면, 날아갈 수 있는 패키지의 길이는 제한이 있는 바, 여러 개로 쪼개서 보내고 붙임) -> 게시판 작성 등의 경우 post 방식이 적합함
  3. 즐겨찾기는 가능하나, 전달되는 데이터가 url에 노출되어있지 않음 -> 기존에 봤던 응답 화면(e.g. my page 등)을 볼 수는 없을 것임
  4. 최대 요청받는 시간(time out, 기다리는 시간, 제한시간)이 존재함 -> 요새는 연결 속도가 빨라서 이 이슈 거의 발생하지 않음

 

  • Servlet 클래스: post 방식으로 요청했으면 doPost() 메서드가 호출되는데, 그 안에서 doGet()을 호출하는 바, doGet()에서 작업하면 됨

 

  • 요청 처리 과정
  1. post 방식의 기본 encoding 설정은 ISO-8859-1이기 때문에, 값을 뽑기 전에 미리 UTF-8 방식으로 encoding 설정을 해야 함 → request.setCharacterEncoding("UTF-8");
  2. 요청 시 전달된 값들을 request.getParameter() 또는 request.getParameterValues()로 값 뽑아내기
  3. 뽑은 값들을 service - DAO - DB로 넘겨서 요청 내용 처리
  4. 처리 결과에 따른 응답 페이지 ← JSP 이용해서 응답 페이지 만들기 + 응답을 JSP에 위임

JSP(Java Server Page): html 내에 Java 코드를 넣음 + 단, 그 JSP 응답 화면에서 필요로 하는 데이터를 request 객체에 담아서 Servlet으로부터 보내줘야 함 → 응답은 JSP가 함

3a) request에 attribute 영역이 있는데, key-value 세트로 묶어서 보낼 수 있음 → request.setAttribute(String "key 값", value(Object)) = JSP에서 사용할 수 있도록 request의 attribute 영역 값 세팅

3b) 현재 작업 중인 doGet() 메소드에서 응답 페이지 만드는 과정을 JSP에 위임 → 위임 시 필요한 객체 = RequestDispatcher

    // 단계3b-1) request.getRequestDispatcher(jsp경로) -> 응답하고자 하는 view(JSP)를 선택하면서 객체 생성
    RequestDispatcher view = request.getRequestDispatcher("view/responsePage.jsp");
    // 단계3b-2) forward() 메소드 -> forwarding
    view.forward(request, response);

🌿 Servlet vs JSP

🌱 Servlet 동작 방식

출처: https://mangkyu.tistory.com/14

🌱 JSP 동작 방식

출처: https://mangkyu.tistory.com/14

 

📗 homework: JavaScript 평가 준비