JSP&Servlet

기초

야생늑대 2022. 5. 29. 23:35
반응형

웹서버 

  •  클라이언트로부터 요청을 받아, 요청한 것을 넘겨주는일(응답)을 한다.
  • 사용자가 웹브라우저로 , 서버에 있는  자원(resource) 을 요청하는 것으로 시작.
  • 요청이 서버로  전달되고, 서버는 사용자가 요청한 것을 넘겨주는 것으로 작업이 완료.
  • resource 는 HTML페이지가 될 수도 있고 이미지파일, 동영상, PDF 파일이 될수 도 있다.
  • 서버는 물리적인 하드웨어,  서버 어플리케이션 소프트웨어 전체를 말한다.

※ 클라이언트는 요청하고 서버는 이를 제공한다.

 

※ 요청한 것이 서버에 없다면? 

▶ "404 Not Found"    오류 메시지가 뜬다.    "요청한 자료를 서버에서 찾을 수 없습니다" 라는 뜻.

 


 

클라이언트

  • 사용자라는 사람, 인간을 의미하기도 하고, 브라우저라는 응용프로그램을 뜻하기도 한다.
  • 총칭해서 사용자가 요구한 대로 동작하는 웹 브라우저라는 뜻으로 이해하자.
  • 브라우저는 서버랑 통신하는 크롬, 네이버웨일, 마이크로소프트엣지와 같은 소프트웨어를 뜻한다.
  • 브라우저의 주된 역할은 HTML 코드를 읽어서(파싱), 화면에 보여주는 것이다.

 

  1. 사용자가 웹페이지에 있는 링크를 클릭
  2. 브라우저가 이를 요청으로 만들어 서버로 넘긴다.  - HTTP메소드, 접근하고자하는 페이지(URL), 폼 파라미터
  3. 서버는 요청한 페이지를 찾는다.
  4. 서버는 응답을 만들어서 브라우저로 보낸다. - 상태코드(요청에 대한 성공여부), 컨텐츠 타입, 컨텐츠
  5. 브라우저는 서버로부터 전달받은 HTML을 사용자가 볼 수 있도록 화면에 출력한다.

HTTP  (HyperText Transfer Protocol의 약자)

  • 웹 상에서 클라이언트와 서버가 서로 대화하기 위한 규약, 언어 를 지칭
  • 웹 상에서 일어나는 클라이언트와 서버간 대화는 거의 대부분 HTTP 프로토콜로 이루어진다.
  • HTTP 는 요청과 응답으로 이루어진 아주 단순한 구조.
  • 클라이언트가 HTTP 요청을 보내면, 서버는 HTTP 응답으로 대꾸한다.
  • 서버는 HTML을 전송하기 위하여 HTTP 를 사용한다.
  • TCP/IP 위에서 돌아간다. 
  • HTTP는 TCP/IP 기반으으로하여, TCP/IP를 이용해서 한 지점에서 다른 지점으로 요청과 응답을 전송한다.
  •  HTTP 응답안에 헤더정도, HTML이 들어있다.
  • 브라우저는 헤더 정보로 컨텐츠를 어떻게 화면에 보여줄지에 대한 힌트를 얻는다.

TCP/IP 

▶ TCP  

  • 한쪽 노드에서 다른 쪽 노드로 파일을 보내는 역할 (여러 개로 잘라서 보낼수 도 있다.)
  • 서버 하드웨어 상에서 돌아가는 소프트웨어를 구별하기 위한 16비트 숫자 값.
  • 웹 서버(HTTP) 는 대부분 80포트 위에서 돌아간다. 
  • 서버 애플리케이션을 구분해주는 '식별자' 라고 생각하자.
  • 포트란 것이 있기 떄문에, 서버는 클라이언트가 지금 어느 애플리케이션에 접속하기를 원하는지 알 수 있다.
  • 예를 들어 웹 브라우저의 경우, 연결 요청을 HTTP 서버가 아니라 POP3 메일서버로 날린다면 메일 서버는 HTTP 요청을 읽지 못한다. 그리고 읽는다고 해도 HTML문서를 만들어내지 못하기 떄문에 응답을 해줄 수도 없다.
  • 포트로 쓸 수 있는 값의 범위는 0~65535
  • 대세 0~1023번까지의 포트는 이미 널리 알려진 서비스를 위하여 예약되어있다. 이 범위의 포트는 사용자제

▶ IP - 한 호스트에서 목적지 호스트까지 패킷을 옮기고 이동하기 위한 기반(베이스) 프로토콜.


HTTP메소드 

  • HEAD, TRACE, PUT, DELETE, CONNECT 여러가지가 있지만, 가장 많이 사용하는 것은   GET, POST

GET

  • 가장 단순한 메소드
  • 단순히 서버에게 자원을 요청하는 일 (HTML페이지, 이미지파일,PDF문서 등)
  • GET의 핵심은 "서버로부터 뭔가를 돌려(get back) 받는다" 라는  것
  • HTTP GET메소드도 많지는 않지만 데이터를 보낼 수 있다.
  • GET으로 보낼 수 있는 글자 수는 제한이 있다.(서버에 따라 다르지만, 검색입력칸에 검색어를 끝도 없이 써 넣으면 GET이 작동하지 않을 수도 있다.)
  • GET의 데이터  전송방식은 브라우저 주소란에 기입하는 URL 뒤에 붙이는 식이다. 그러므로 중요한데이터일 경우데도 화면에 다 보인다. 그러니 패스워드같은 민감한 데이터는 GET으로 보내지 않는 것이 현명하다.
  • 위 두가지 이유로, GET으로 전송하는 URL은 즐겨찾기에 등록할 수도 있지만, POST는 대부분 그렇지 못하다.
  • 브라우저에 따라 폼의 서밋(submit) 결과를 즐겨찾기에 등록 못할 수도 있다.
  • ?는 경로(path)와 파라미터(쿼리스트링)를 구분하는 구분자이다.   
  • 개별 파라미터는 & 로 구분한다.

POST

  • GET 보다 강력한 메소드. GTE++느낌
  • 서버에세 자원을 요청할 떄 필요한 정보를 함꼐 넘겨 준다.
  • POST를 만든 목적은 서버한테 복잡한 요청도 한번 해보려고 만들었을 것.
  • 예를 들면 사용자가 자신의 정보를 form에 입력하여 서버로 전송하면, 서버는 이 정보를 데이터베이스에 저장한다와 같은 시나리오
  • 여기서 서버로 보내는 데이터를 메시지 몸체(Message Body) 또는 짐(payload) 이라고 부른다.
  • POST방식은  길이에 제한이 없다.
  •  

HTTP응답

  • HTTP응답은 간단히 헤더와 몸체로 구성되어 있다.

▶ 헤더 

  • 사용된 프로토콜이 뭔지, 보내준 요청이 성공했는지, 몸체에 포함된 컨텐츠의 종류는 무엇인지 등이 들어있다.
  • content-type의 값을 보통 MIME 타입이라고 부른다.
  • MIME 타입이란 브라우저에게 "지금 서버가 이러한 데이터를 보내려고 하니, 화면에 보여줄 준비를 하시오"라는 정보이다.
  • 이 MIME 타입은 클라이언트가 보낸 요청의 헤더 중 Accept란에 기술되어 있는 값과 관련되어 있다.

▶ 몸체

  • HTML과 같은 컨텐츠가 들어 있다. 브라우저는 바로 이 정보를 화면에 출력한다. 

   URL(Uniform Resource Locators) 

웹 상에 있는 모든 자원(Resource)은 자신만의 고유한 이름을 가진다.

이 고유한 이름을 부여하는 방식이 바로 URL 이다.

http://www.wickedlysmart.com:80/beeradvice/select/beer1.html

http://      

프로토콜(Protocol). 서버와 대화하기 위하여 사용하는 커뮤니케이션 프로토콜

www.wickedlysmart.com 

서버(Server). 인터넷상에 둘도 없는 이름.

이 이름은  IP주소에 매핑된다. IP주소는 숫자로 구성되며 xxx.xxx.xxx.xxx 형식이다.

하지만 IP주소를 직접사용하는 것보다는 이름을 사용하는 것이 기억하기 편하기 때문에 이름을 지정하고 IP주소를 매핑해서 사용한다.

:80

포트. URL의 옵션[생략되어있으면  80이 default(웹 서버 애플리케이션이 할당)]

포토번호를 보면 어떤 서버 애플리케이션이 서비스 되는지 알 수 있다.

/beeradvice/select/ 

서버에서 resource의 위치

/beer1.html

자원. 요청된 컨텐츠 이름

자원에는 HTML, Servlet, img, PDF, 음악, 비디오 등 서버가 제공하는 모든 것이 다 포함되어 있다.

자원을 명시하지 않으면 많은 웹서버들은 index.html을 기본으로 넘겨준다.

 

GET방식이라면 URL의 뒷부분에 ? 구분자를 사용하고 파라미터를 붙여서 날아온다.  (질의어 : 쿼리스트링)

?memberid= id&membername=name


동적인 컨텐츠 생성

  • 클라이언트의 요청에 따라 매번 다른 응답을 하려면 웹 서버 혼자서는 불가능.
  • 그래서 동적인페이지(요청에 따라 실시간으로 작성된페이지)를 보여주기 위해서는 CGI나 서블릿 같은 도우미(Helper) 애플리케이션이 필요하다.

 

 

 

 

 

 

 

 

 

 

반응형

'JSP&Servlet' 카테고리의 다른 글

동기식&비동기식 그리고 ajax  (0) 2022.05.11
<form>태그의 데이터 전송  (0) 2022.05.10
Jsp/Servlet - 상대경로, 절대경로  (0) 2022.05.09
서블릿/JSP 정리01  (0) 2022.05.05
JSP/ MVC모델  (0) 2022.04.29