본문 바로가기
네이버클라우드/JAVA 웹 프로그래밍

JAVA 55일차 (2023-08-08) 자바 프로그래밍__Servlet API 사용법_2

by prometedor 2023. 8. 9.
- 자바 프로그래밍(eomcs-servlet)
  - 서블릿 작성 방법
  - HTTP 프로토콜 이해: GET, POST, HEAD 요청
  - HttpServlet 클래스 사용법
  - URL 인코딩(퍼센트 인코딩) 원리 및 목적

 

ㄴ ex01 패키지에 Servlet04 라는 이름의 패키지를 생성

 

Servlet04.java

ㄴ Add default serial version ID 를 선택하여 추가

=>

Servlet04.java

=>

Servlet04.java

=>

Servlet04.java

=>

Servlet04.java

=>

Servlet04.java

 

Servlet04.java

package eomcs.servlet.ex01;

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("/ex01/s4")
public class Servlet04 extends HttpServlet {

  private static final long serialVersionUID = 1L;

  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    System.out.println("GET 요청 받음!");

    resp.setContentType("text/plain;charset=UTF-8");
    PrintWriter out = resp.getWriter();
    out.println("GET 요청을 받았습니다!");
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    System.out.println("POST 요청 받음!");

    resp.setContentType("text/plain;charset=UTF-8");
    PrintWriter out = resp.getWriter();
    out.println("POST 요청을 받았습니다!");
  }
}

 

Postman 설치

=>

=>

ㄴ Download Desktop App 선택

=>

ㄴ Mac Apple Chip 선택 (MacBook Air M1)

=>

ㄴ Postman 설치

 

=>

=>

=>

ㄴ Workspaces 탭 선택

=>

ㄴ My Workspace 선택

=>

ㄴ [+] 버튼을 선택하여 Create new collection 을 실행

     => 새로운 컬렉션 생성

=>

ㄴ 컬렉션 이름을 servlet-app 으로 변경해주기

=>

ㄴ servlet-app 컬렉션의 [v] 선택하여 Add a request 선택하기

=>

ㄴ GET 방식 테스트 추가하기

    ㄴ /ex01/s4 로 설정해주기

=>

ㄴ 경로를 localhost:8888/ex01/s4 라고 설정하기

ㄴ [Save] 버튼 선택하여 저장하기

=>

=>

ㄴ 서버 start 하기

=>

ㄴ [Send] 선택 시 GET 요청을 받음

=>

 

=>

=>

ㄴ POST 요청 테스트 완료

 

 

ㄴ Add request 선택

=>

ㄴ /ex01/s4 로 설정해주기

=>

ㄴ HEAD 로 설정하고, 경로를 localhost:8888/ex01/s4 라고 설정하기

=>

=>

ㄴ HEAD 는 GET 으로 요청됨

 

 

ㄴ PUT 로 설정하고, 경로를 localhost:8888/ex01/s4 라고 설정하기

 

ㄴ /ex01/s4 로 설정해주기

=>

ㄴ 405 에러 발생

=>

ㄴ 변화 없음을 확인

 

 

Charles Proxy 다운로드

=>

=>

=>

ㄴ macOS (dmg, 54.6MB) 선택

=>

ㄴ [Agree] 선택

=>

ㄴ Charles 를 Applications 로 drag & drop 하기

=>

=>

=>

=>

ㄴ Proxy Setting... 선택

=>

ㄴ 포트번호가 겹치므로 Charles Proxy 의 포트는 9999 로 설정해주기

=>

ㄴ maxOS 는 macOS Proxy 를 체크해줘야 함

=>

ㄴ Proxy 테스트 시 localhost 로 하면 안 되고, 실제 ip 주소를 입력해야 함

=>

ㄴ 보조 프로그램 설치

 

 

ㄴ 포스트맨에서 GET 요청하기

=>

ㄴ POST 요청을 Charles Proxy 를 이용해 확인하기

ㄴ Raw 를 선택하여 날것 그대로 보기

 

 

ㄴ 포스트맨에서 POST 요청하기

=>

ㄴ POST 요청을 Charles Proxy 를 이용해 확인하기

 

 

ㄴ 포스트맨에서 Params 를 입력 후 [Send] 선택

=>

ㄴ Params 를 입력한 GET 요청을 Charles Proxy 를 이용해 확인하기

 

 

ㄴ POST 요청으로 값 전달 테스트를 하려면 Body 탭에서 x-www-form-urlencoded 를 선택하여 추가한 후 [Send] 선택하기

=>

ㄴ Params 를 입력한 GET 요청을 Charles Proxy 를 이용해 확인하기

 

 

Servlet04.java

package eomcs.servlet.ex01;

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("/ex01/s4")
public class Servlet04 extends HttpServlet {

  private static final long serialVersionUID = 1L;

  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    System.out.println("GET 요청 받음!");

    resp.setContentType("text/html;charset=UTF-8");
    PrintWriter out = resp.getWriter();
    out.println("GET 요청을 받았습니다!");
  }

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    System.out.println("POST 요청 받음!");

    resp.setContentType("text/html;charset=UTF-8");
    PrintWriter out = resp.getWriter();
    out.println("POST 요청을 받았습니다!");
  }
}

ㄴ plain -> html 로 변경해주기

=>

ㄴ Params 를 입력한 GET 요청을 Charles Proxy 를 이용해 확인하기

=>

ㄴ Params 를 입력한 POST 요청을 Charles Proxy 를 이용해 확인하기

 

ㄴ 포스트맨을 이용하여 HEAD 요청 해보기

=>

ㄴ Params 를 입력한 HEAD 요청을 Charles Proxy 를 이용해 확인하기

 

 

ㄴ 가각간 입력 후 [Send] 선택

=>

ㄴ GET 요청을 Charles Proxy 를 이용해 확인하기

ㄴ 한글 -> 퍼센트 인코딩 되어 전달됨

 

 

ABCabc!@#$&? 가각간 입력 후 GET 요청하기

=>

ㄴ GET 요청을 Charles Proxy 를 이용해 확인하기

 

 

 

ㄴ servlet-app/src/main/webapp 경로에 ex04 폴더 생성

 

ㄴ eomcs-java/eomcs-servlet/app/src/main/webapp 에 있는 실습 자료 복사

=>

ㄴ bitcamp-study/app/src/main/webapp 위치에 붙여넣기

=>

ㄴ /Users/yangsoyul/git/eomcs-java/eomcs-servlet/app/src/main/java/com/eomcs/web 경로의 ex04 폴더 복사

=>

ㄴ /Users/yangsoyul/git/bitcamp-study/servlet-app/app/src/main/java/eomcs/servlet 경로에 붙여넣기

=>

=>

ㄴ 각 파일 모두 패키지 변경해주기

=>

ㄴ 서버 start 해주기

=>

=>

test01.html

ㄴ /web 제거

=>

test01.html

ㄴ 경로 위와 같이 변경해주기

=>

=>

=>

=>

 

 

ㄴ form 에 값 입력

=>

 

 

test02.html

=>

=>

=>

=>

ㄴ 값 입력 후 [전송] 선택

=>

=>

ㄴ Charles Proxy 로 확인

    => name=%ED%99%8D%EA%B8%B8%EB%85%99&age=20

 

ㄴ POST 요청은 Payload 탭에서 전달된 값 확인 가능