Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원/7월

22.07.28 - [ WAS ] 내 파일 경로 숨기기 , 하나의 컨트롤러로 2가지 요청 처리

giggs 2022. 8. 4. 10:52

 

 

-- Index --

 

 

1. jsp파일 바로 요청 해보기 2. 하나의 컨트롤러로 2가지 요청 처리
화면 보여달라는 요청 보내고 - 화면 보기 화면 요청은 - doGet() / 데이터처리 요청은 - doPost()

 

 

 

 


 

 

 

1. 페이지 jsp 파일 바로 요청

 

 

1-1 회원가입 페이지인 - joinForm.jsp 파일 보여달라고 바로 요청해주자

 

  • 회원가입 버튼 클릭하면 요청 보내도록 해주기
  • < button onclick = " location.href = " 경로 " >

 

 

요청하는 게 클라이언트가 서버에게 요청하는 것으로 프로젝트 이름부터

 

 

 

이렇게 요청하면 회원가입 페이지가 보이긴 하지만 

페이지에 요청 방식이 get 방식으로 요청을 보내는 것이기 때문에 

페이지 URL에 내 파일의 경로가 다 노출된다

 

 

내 파일의 경로가 공개되는 것은 좋지 않다.

방법은? - servlet 만들어서 forward 하면된다.

 

 


 

1-2 회원가입 페이지를 보여주는 servlet을 통해서 파일 보여주도록 해주기

 

 

# 페이지 요청 경로 만들어주고

 

 

 

href=“ ” 요청은 url을 바꿔서 요청하는 것 get방식으로 요청하는 것

controller = servlet

 

 


 

 

# 요청 처리하는 servlet을 통해 회원가입  jsp파일로 요청 떠 넘겨주기

  • 반드시 doGet() 메서드를 재정의해서 요청 처리

 

 


 

 

# 이 컨트롤러는 / 서블릿은 

  • 클라이언트의 요청을 받아서 jsp파일로 요청을 떠넘기는 역할만 한다. 
  • 이렇게 번거롭게 하는 이유는? – 내 파일의 경로를 숨기기 위해서
  • 이제 클라이언트가 ( 사용자가 )
  • jsp파일을 직접 요청하는 일은 없을 것이다. controller를 통해서 요청하도록 할 것!

 

 

 


 

 

 

2. 하나의 Controller에서 2가지 요청 처리하기 

 

 

2-1 컨트롤러가 요청을 처리하는 2가지 방식 체크

  • 컨트롤러(서블릿) 에게 요청하는 방식은 2가지가 있다.
  • url을 이용해서 header에 data를 담아서 요청하는 get방식과
  • url과 data를 body에 담아서 요청하는 post방식
  • 컨트롤러는 요청 방식에 맞춰서 doGet() / doPost() 메서드로 처리해준다.
  • form태그 – ( input태그 name 지정 ) - get/post 선택가능
  • URL 입력 ( a태그, 버튼 location 등 ) - get방식으로만 요청 가능

 

2-2 화면 요청은 doGet() - 백엔드 작업 요청은 doPost()

  • 파일 경로를 숨기기 위한 단순한 화면 파일 요청은 doGet() 방식으로 jsp파일 연결해주어서 처리 
  • 실제 백엔드 작업이 필요한 데이터 처리 요청은 doPost() 방식으로 CRUD작업 처리
  • /member/join 이라는 같은 요청을 보내도 –
  • doPost() 와 doGet() 메서드로 다르게 처리된다.
  • 이러면 같은 경로로 요청 보내도 처리되는 메서드가 다르므로 처리되는 내용이 다르다.

 

 

 

 

 

 

# 이렇게 처리 안 할 때에는 - 의미 없는 url 요청이 많이 생기고,  controller 도 많았었다.

  • 협업이나 프로젝트 구성에도 좋지 않다. 
  • 회원가입 화면 요청할 때 /member/join을 사용했다면
  • 회원가입 데이터 처리할 때 /member/joinDB 이런 식으로 점점 더 복잡한 요청 해주어야 한다.