[MVC SPRING] 03. 요청(HttpServletRequest)과 응답(HttpServletResponse) 이해하기
안녕하세요. Nerd-Lee입니다.
공부 내용은, 인프런 박매일님의
[NarP Series]MVC 프레임워크는 내 손에[나프1탄]
을 참고하였습니다.
MVC 1단계인, Servlet 환경으로만 만들어보고, MVC 2단계로 넘어가고
나중에는 Spring Framework를 사용하는 방식의 강의입니다.
MVC 1단계는, Controller + Model 만을 사용하는 방식입니다.
1. Controller 역할에서의 코드를 보고, 실행하는 로직 생각해보기
- jsp에, form 태그에 action 속성에는 calc.do 라고 맵핑이 되어 있다.
- submit 버튼을 클릭하면, input의 name으로 되어 있는 값들이 변수가 되어 해당 값들을 calc.do에 넘겨주게(요청) 된다.
이 때 넘어가는 정보를 요청정보라고 한다. 요청정보는 하나의 패킷으로 전송된다. 패킷은, header와 body로 이루어져있다. - header에 들어있는 값(예)
- ip정보 : 127.87.35.1
- port정보 : 9000
- body에 들어있는 값
- su1 = 1
- su2 = 100
- 톰캣은 header와 body 정보를 먼저 받아야한다. 그러기 위해서는 2개의 객체를 만들게 된다.
그 객체가HttpServletRequest(요청객체)
와HttpServletResponse(응답객체)
객체이다.
2. HttpServletRequest란?
- WAS(tomcat 서버)가 패킷을 받으면, 생성하게 되는 2개의 객체 중 하나로,
요청객체
이다. - 클라이언트가 요청을 하면,
HttpServletRequest
는 header와 body를 저장하게 된다. HttpServletRequest
형 변수가 service라는 메서드 안에 매개변수로 되어 있고
해당 변수에서 getParameter라는 함수에, body의 키값을 입력하면 값을 받아오게 된다.
3. HttpServletResponse란?
- WAS(tomcat 서버)가 패킷을 받으면, 생성하게 되는 2개의 객체 중 하나로,
응답객체
이다. HttpServletResponse
는 패킷에서 body가 아닌 header 정보를 가지게 된다.
그래야 요청받은 값을 프로그래밍해서, 클라이언트에게 응답해줄 수 있기 때문이다.HttpServletResponse
형 변수가 service 메서드 안에 매개변수로 되어 있고
해당 변수에서 getWriter라는 함수에는 클라이언트의 정보가 담겨있고
그 정보를 PrintWriter형 변수에 대입하게 되면 빨대 역할을 하게 된다.
그 빨대에, println 함수로, html이나 값을 넣어서 클라이언트에게 응답하게 되는 것이다.
4. GET과 POST 방식의 차이점
-
html 또는 jsp에서,
<form>
태그는 기본적으로, GET 방식을 사용한다.
그런데, 숫자를 입력하고, calc.do로 넘어가게 되면
url에 /calc.do?su1=1&su2=100 이라고 값이 보여버리게 된다.
하지만,<form method="post">
라고 post 방식으로 변경하면, url에 보여지지 않는다. - GET 방식의 특징
- 보안에 취약하다.
- 데이터의 한계가 온다. url을 이용해서 서버로 넘기기 때문이다.
- POST 방식
- packet에 쌓아서 넘기기 때문에, 보안성이 좋다.
- 또한 데이터의 한계도 없고 용량제한도 없다.
- 보통
form
태그를 사용한다면, POST 방식으로 사용하는 것이 좋다.
다음 공부 내용은, GET과 POST 요청 이해하기이다.
다음 글로 찾아오겠습니다!