반응형
1. 웹프로그램의 개념
- 웹서비스(www)를 제공하는 컴퓨터(web server)에서 클라이언트 요청에 의해 실행되는 프로그램
[step1] (요청) 클라이언트 >>>>> 서버
- (http프로토콜 이용) 클라이언트가 어떤 서버에 접속하여 → url주소로 요청! → 요청에 의한 실행이 일어남 → 그 결과를 웹문서로 받아서 출력처리
[step2] (응답) 서버 >>>>> 클라이언트
- 서버는 응답후 실행결과를 클라이언트에게 전달함
- (실행결과 형식) 웹문서로 제공 . json으로 제공.. 등
- 웹 문서 : HTML 언어로 만듦
- 파싱해서 렌더링 ( 해석해서 뿌려줌, 출력함)
[step3] (요청) - (응답) - (출력)의 반복
- 요청 → 실행 → 출력 → 요청 → 실행 → 출력.. 의 반복
1) 웹프로그램 예시
2. 웹에서 입출력하는 방법
1) 웹에서의 입출력 (웹서버 & 웹클라이언트)
2) 웹서버(Web Server)의 개념
- 웹 서비스를 제공하는 컴퓨터
- 웹사버 컴퓨터 내에는 웹서버 역할을 할 수 있는 프로그램이 있음
- 프로그램은 클라이언트의 요청을 언제든 받을 수 있도록 항상 실행되어 있음
Web Server기능
- 클라이언트가 접속해서 요청할 수 있는 환경 제공
- 웹서버 기능만 제공해주는 프로그램
- ex) Apache Server (아파치 서버)
Web Container기능
- 클라이언트가 요청하는 웹프로그램을 실행할 수 있는 기능 제공
- 즉, 객체를 만들어서 메소드를 호출해 프로그램을 실행할 수 있게 함
- 웹컨테이너 기능만 제공해주는 프로그램
- 웹서버에서 웹컨테이너 기능이 왜 필요할까? 실행 시키려면 무조건 메소드가 호출이 되어야하잖아
- 웹컨테이너 기능만 제공해주는 프로그램
- ex) 제우스 , 톰캣
WAS(Web Application Server)프로그램
- 웹서버 기능 + 웹컨테이너 기능을 모두 제공해주는 프로그램
- 그냥 웹서버프로그램(WAS)라고 부름
- 종류는 굉장히 많음
- 가장 대표적인 WAS 프로그램
- ex) Apache Tomcat (아파치 톰캣): 우리가 설치할 프로그램
- 이클립스 내에 Apache Tomcat(아파치 톰캣) 연결해 클라이언트가 요청 시에 웹프로그램이 실행될 것임
웹 서버의 Web Directory 내
- Web Directory : 웹프로그램(.jsp) 혹은 웹문서(.html)의 경로 ( = Document Root)
- 웹 서버의 Web Directory 내에는 웹프로그램 혹은 웹문서가 존재함
- 웹프로그램 : (.jsp), SSL(Server Script Language)
- 웹문서 : (.html), CSL (Client Scriot Language)
- 요청에 대한 응답
- 웹문서 주기 혹은
- 웹프로그램 실행 후 그 결과를 웹문서에 담아 주기
3. 웹클라이언트(Web Client)
- 웹서비스를 웹서버에게 제공받는 컴퓨터
[step1] 웹브라우저 이용해 URL주소로 접속
- step1. 웹클라이언트는 웹브라우저를 통해 URL주소 입력해 웹서버에 접속함
- step2. 웹서버(WAS)에게 필요한 자원( 웹 프로그램 or 웹 문서 )을 요청함
- step3. 이때, 클라이언트는 모든 정보를 request 메세지에 담아 서버에게 전달함
request 메세지(객체) : 클라이언트의 정보를 담아보내는 메세지
url 주소 : http://서버명 :port번호 /자원의경로(웹프로그램 or 웹문서)
[step2] 웹클라이이언트는 request 메세지에 담아서 요청
- (요청) WAS님, 웹문서 주세요! (ex.HTML - 정적웹문서) >>>>> (응답) WAS가 지정한 웹디렉토리 내에서 웹문서(HTML) 찾아 브라우저에게 줌
- (요청) WAS님, 웹프로그램 주세요! (ex. servlet (jsp -동적웹문서) ) >>>>> (응답) WAS가 지정한 웹디렉토리 내에서 웹프로그램 jsp(servlet) 찾아 실행 시켜줌 ( SSL : 서버측에서 해석해서 실행되는 언어 ) + 그 결과물로 WAS는 (servlet → html) 웹문서를 만들어 브라우저에게 줌
- (전달받은 웹문서 (html,css,js - CSL )는 브라우저가 가진 엔진에서 해석해서 실행함
웹프로그램은 서버측에서 실행 : SSR(Server Side Rendering)
웹문서는 브라우저의 엔진에서 실행 : CSR(Client Side Rendering)
1) GET방식 (기본값)
- <Form> 태그 외 나머지는 무조건 GET 요청방식
- <header>
- 값 + 클라이언트에 대한 모든 정보 다 저장
- <body>
- 기본적으로 비어있음
- url주소(값)는 2키로 바이트 이상 전달 못함 (2000자) / 한글 전달 못함
- 값이 눈에 다 보임 (보안 위험)
//URL
<http://www.itwill.xyz>(:80생략가능)/test/index.jsp
(웹클라이언트) www.itwill.xyz 서버에 80번 포트로 접속하여 test폴더 밑에 있는 index.jsp 실행해주세요!
(웹서버) test폴더 밑에 있는 index.jsp 파일을 찾아서 실행 후 웹문서(html)로 만들어 결과 줌
//URI
<http://www.itwill.xyz>(:80생략가능)/test/index.jsp?name=kim&subject=java
name=kim&subject=java
해석) name은 kim(값)이고, subject은 java(값)이에요!
<header>에 값을 전달해 요청함
? : (QueryString) 질의문자열
& : 연결
2) POST방식
- HTML 중 <Form> 태그 이용 시
- <header>
- 값 + 클라이언트에 대한 모든 정보 다 저장
- <body>
- <Form> 태그 이용해 받은 사용자 입력값 저장
- <body>안에 담겨서 입력값이 전달되므로,
커다란 데이타를 사용할 때 이용 or 사용자가 주는 아주 중요한 정보 (보안요함)일 때 이용
4. 웹서버(Web Server)
[step1] 웹서버는 respose메세지에 담아 응답
ex) 클라이언트의 요청을 받은 아파치톰캣(웹서버)은 웹프로그램을 실행해해줌 (jsp → servlet)
- 웹프로그램의 결과물을 웹문서로 만들어 클라이언트에게 줌 (servlet → html문서 전달)
response메세지 (객체) :
서버의 정보를 담아보내는 메세지
<Header> : 첫번째로 헤더가 먼저 읽혀짐,
상태코드(StatusCode ) SC 존재
<Body> : 데이타 담음
[step2] 첫번째로 상태코드를 먼저 전달함
1XX : 처리중
- 지금 너가 보낸거 아직 실행중이야
2XX : 처리완료 - 응답 (정상)
- 너가 요청한거 정상적으로 응답완료했으니까 <Body>에 봐봐 결과가 있을거야!
- 파싱하고 렌더링한다(결과를 출력한다)
3XX : 재요청
- 다시 한번 요청해줘 ->301 (내가 url주소를 알려줄테니까 거기로 다시 요청해줘) , 302 , ...
4XX : 요청실패 - 잘못된 요청
- 요청방식이 틀릴 수 있음
- 401 , 402
- 403 (권한이 없을 때)
- 404 (Not Found) - 너가 요청한 프로그램이 없어, 찾을 수 없어 (요청한 url경로에 자원이 없다면 무조건 404 )
- 405 (요청방식을 허용하지 않아)
5XX : 실행오류 - Exception 발생
- 프로그램 실행하다가 예외가 발생했어!
5. 웹문서(CSL) & 웹프로그램(SSL)
1) CSL(Client Script Language)
- Client Side Rendering
- 웹문서(HMTL, CSS, 자바스크립트)의 해석은 클라이언트에 가져가서 브라우저 엔진이 함
2) SSL(Server Script Language)
- Server Side Rendering
- jsp. thymleaf, servlet …
- 서버에서 실행되는 언어(자바)로 만든 웹프로그램
- 실행은 Server Script Language(자바)로 만들어졌으므로 웹서버에서 함
- 그 결과물로 웹문서를 클라이언트에게 전달함
반응형
'web > html' 카테고리의 다른 글
[html] 6. 하이퍼링크 태그 | 기타 태그 | 문장강조 태그 | 인용문출력 태그 | 멀티미디어 태그 | 이미지설명제공 태그 (2) | 2024.04.29 |
---|---|
[html] 5. 시맨틱태그 | 텍스트태그 | entity | 박스태그 | 이미지태그 | 리스트태그 | 테이블태그 (0) | 2024.04.28 |
[html] 4. 기본 태그 | head | body (1) | 2024.04.28 |
[html] 3. 웹 통신 프로토콜 (HTTP/TCP/IP) (0) | 2024.04.27 |
[html] 2. 이클립스에서 WAS 설치 및 사용법 (0) | 2024.04.27 |