로그인 바로가기 하위 메뉴 바로가기 본문 바로가기
난이도
심화

웹 프로그래밍(풀스택)

임시 이미지 [코스설계] Front-End 윤지수
http://www.boostcourse.org/web316/notice/2433
좋아요 4758 수강생 48442

아래의 글은 BOOSTER 서포터즈로 활동하고 진오(jin***)님이
작성한 부스트코스 후기입니다.
여러분들의 성원에 더 노력하는 부스트코스가 되겠습니다.
감사합니다.
******************************************
1)링크: https://blog.naver.com/jinn_o/221815550758
2)작성날짜: 20/02/19

 

(본문 내용)

먼저, 웹 브라우저는 도메인과 포트번호를 이용해서 서버에 접속한다.

​

그리고 IP 주소라던지, Path 정보라든지 ... 하는 다양한 정보들을 포함한 요청 정보를 서버에 보낸다.

이 때 나오는 것이 HttpServletRequest 객체이다.

​

JAVA 공부를 해봤던 사람이라면, 객체지향방식이 뭔지 알 것이다.

HttpServletReqeust 객체와 HttpServletResponse 객체는,

각각 요청정보와 응답정보를 지닌 객체이다.

​

이렇게 전달된 객체는 doGet(), doPost(), Service() 같은 메서드에 파라미터로 전달이 된다.


(이전 포스팅 중에, 이와 관련된 내용을 미리 예고한 적이 있다.)

HTTP 동작방식 알아보기 : https://blog.naver.com/jinn_o/221777814303

웹의 동작 (HTTP 프로토콜의 이해)

인터넷이란?네트워크들의 네트워크, 즉TCP/IP 라는 약속으로 연결된 네트워크들의 결합체이다.​그 안...

blog.naver.com

위 포스팅에서, HTTP 요청객체와 응답객체는 각각 헤더와 바디로 나뉘고,

각각의 헤더와 바디에 어떤 내용들이 포함되어 있는지 자세하게 풀어 작성했다.

위 이미지와 같은 방식으로, 웹 브라우저와 웹 서버는 소통한다.

요청객체, 응답객체를 이용하여 소통하는 것이다.


이제, 요청 객체가 어떤 정보들로 어떻게 이루어져있는지 실습을 통해서 알아보자!

먼저, 요청 객체는 어떤 정보들로 구성되어 있을까?

​

항상 했던 데로 서블릿을 만들고 doGet() 메서드를 다음과 같이 바꾸어보자.

( 웹 어플리케이션 만드는방법? : https://blog.naver.com/jinn_o/221806593077 )

[부스트코스] 자바 웹 어플리케이션을 만들어보자!

와! 드디어 기다리고 기다리던 직접 웹 어플리케이션 서버(WAS; Web Application Server)을 만들어보...

blog.naver.com

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head><title>form</title></head>"); out.println("<body>"); Enumeration<String> headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String headerName = headerNames.nextElement(); String headerValue = request.getHeader(headerName); out.println(headerName + " : " + headerValue + " <br> "); } out.println("</body>"); out.println("</html>"); }

Enumeration 은 JAVA 에서 쓰이는 연속 배열 클래스 중 하나이다. 여기서는 헤더 정보를 끄집어내기 위한 수단으로 쓰이고 있다. 위에 해당하는 소스코드에 대해서 더 자세히 설명하지는 않겠지만,(JAVA의 영역이다.) 쉽게 설명하자면, 요청 객체의 정보들을 끄집어내기 위한 소스 코드이다.

​

< 결과화면 >

":" 이전 내용들은 요청 헤더에 해당하는 내용들이고

":" 이후 내용들은 해당되는 요청 헤더에 해당하는 요청 정보들이다.

정말 다양한 정보가 들어있다. 이러한 정보들을 가지고 요청에 대한 처리를 할 수 있는 것이다.

​


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head><title>form</title></head>"); out.println("<body>"); String name = request.getParameter("name"); String age = request.getParameter("age"); out.println("name : " + name + "<br>"); out.println("age : " +age + "<br>"); out.println("</body>"); out.println("</html>"); }

이번에는 이런 내용으로 소스코드를 작성해보겠다.

GET 방식으로 요청이 들어가는 방식중에서도, URL 파라미터를 이용해서 접속하는 방식이다.

​

<결과화면>

보면 URL 주소가

http://localhost:8080/firstweb/param?name=kim&age=5 라고 되어있다.

여기서 주목할 부분은 param?name=kim&age=5 이 부분이다.

param 파라미터로 name 이 kim 이고 age 가 5 인 파라미터가 GET방식으로 요청되었다는 의미이다.

​

+) 참고로, 앞 주소에 대한 의미는 다음과 같다.

http://localhost:8080/firstweb/param?name=kim&age=5

(해당 내용은 위에 링크해놓은 이전 포스팅에서 설명한 바 있다.)


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head><title>info</title></head>"); out.println("<body>"); String uri = request.getRequestURI(); StringBuffer url = request.getRequestURL(); String contentPath = request.getContextPath(); String remoteAddr = request.getRemoteAddr(); out.println("uri : " + uri + "<br>"); out.println("url : " + url + "<br>"); out.println("contentPath : " + contentPath + "<br>"); out.println("remoteAddr : " + remoteAddr + "<br>"); out.println("</body>"); out.println("</html>"); }

이번에는 이런 소스코드를 작성해보자.

​

<결과화면>

이것 말고도 request.get 만 치면 그 뒤에 나오는 메서드들이 상당히 많다.

이를 이용해서 요청 정보의 다양한 정보들을 다 빼올 수 있다!

​

​

​


*********************************************