1 분 소요

안녕하세요. 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 요청 이해하기이다.



이 글이 도움이 되셨다면 댓글 부탁드립니다^^
다음 글로 찾아오겠습니다!