Servlet의 request,response객체와 doGet,doPost 메서드
자바는 객체지향프로그램이기 사용자가 어떤것을 요청했는지의 request도 객체의 메소드를 사용한다.
그 request를 가공,처리해 사용자에게의 응답을 하고 싶을 때는 response 객체의 메소드를 사용한다.
request객체
웹 브라우저를 통해 서버에 어떤 정보를 요청하는 것을 request라고 한다. 그리고 이러한 요청 정보는 request 객체과 관리한다.
response객체
웹 브라우저의 요청에 응답하는 것을 response라고 하며 이러한 응답의 정보를 가지고 있는 객체를 response 객체라고한다.
Servlet을 생성하면 추상클래스인 HttpServlet을 상속을 받고있는데 HttpServlet은 위 그림처럼
GenericServlet을 상속받고 있고 GenericServlet은 위의 인터페이스들을 구현하고 있다.
그러므로 개발자는 HttpServlet만 상속 받고도 필요한 기능을 그때그때 구현해서 사용하면된다.
사용자가 request를 하면 서버에서 데이터를 받게되는데 두 가지 방법으로 받을 수 있다.
doGet,doPost 둘 중 하나의 방법으로 받을 수 있다.
html의 form 태그로 doGet,doPost를 결정한다.
doGet() 메서드
데이터(사용자 정보)가 웹 브라우저 URL에 노출되어 웹 서버로 전송되기 때문에 보안에 취약하다.
누군가 데이터를 가로챌 위험이 있다.
doPost() 메서드
사용자의 데이터가 header파일에 암호화되어 전달된다. 로그인,회원가입등에 쓰인다.
doGet방식과는 달리 매핑정보만 노출된다.
실습예제
먼저 doGet메서드부터 먼저 실행해보도록 하겠다.
html파일을 서버에서 실행후 내용을 입력해주고 sign up 버튼을 클릭했다.
doGet방식으로 설정 후 데이터를 보냈더니 위처럼 내가 기입한 내용들이 다 드러난것을 확인해 볼 수 있다.
이처럼 doGet 방식은 보안에 취약함을 확인할 수 있다. 또한 주소창에 쓰이는 내용들에 한계가 있다.
이번에는 doPost 방식을 확인해보겠다.
doGet메서드를 실행할 때와 doPost메서드를 실행할 경우의 Servlet코드가 두 경우 모두 doGet부분에 코드가 모여있는 것을 확인할 수 있는데 doPost부분에 코드를 작성할 수 있지만 좀 더 효율적으로 하기위해 코드를 한쪽으로 모은것이다.
실무에서 많이 사용한다고 한다.
똑같이 서버에서 실행을 하고 내용을 입력해주면 위처럼 화면이 나오는데 doGet방식과는 달리 기입내용들이 나오지 않고 매핑정보만 노출이 되는것을 확인해 볼 수 있다.