#Web서버란
HTTP를 통해 웹브라우저에서 요청하는 정적 웹페이지(HTML)를 응답해주는 서비스 프로그램(소프트웨어)
HTTP란 HyperTextTransferProtocol의 약자로 www상에서 사용하는 프로토콜(메세지를 주고 받는 체계)이다
#HTTP
#Web서버와 클라이언트(사용자) 간에 주고 받는 방식
Web서버와 클라이언트(사용자) 간에 주고 받는 방식은 기본적으로 HTTP라는 프로토콜을 사용한다
클라이언트에서 웹서버에 요청하는 것을Request(요청) 이라고 하며
웹서버에서 클라이언트에 응답하는 것을 Response(응답) 이라고 한다
기본적으로 web서버와 클라이언트 간에 주고 받는 방식은 Request(요청) 과 Response(응답) 2가지로 성립된다
Request(요청)
Response(응답)
#HTTP 메서드에는 GET, POST가 있으며 서버가 요청을 수행하기 위해 해야할 행동을 표시한다
#GET (서버로부터 정보를 검색하기 위해 설계된 메서드)
Body에 전송할 데이터를 담지않고
쿼리스트링(주소줄 뒤에 ?변수 &변수 &변수 방식)으로 이어붙여서 값을 전달한다
(처음엔 ?로 시작하고 두번째 변수부터는 &으로 시작한다)
Ex) www.example-url.com/resources?변수명1=변수값&변수명2=변수값
길이제한이 있기 때문에 많은 양을 전달하기에는 부적합하며
주소에 정보가 노출되기 때문에 보안에 취약
#POST(리소스를 등록/갱신 하기위해 설계된 메서드)
전송할 데이터를 Body에 담아서 전송(form태그 등)
길이제한 없음
주소줄에 정보가 보이지 않아 get보다 안전하기만
주소줄에 보이지 않을뿐 통신을 도청 가능하기 때문에 암호화 권장
비동기 식에도 사용법은 동일하게 적용된다
#그 외
브라우저의 북마크를 등록할경우 URL을 열때 GET방식으로 열린다
POST방식의 경우 결과를 Body에 담기 때문에 검색결과를 북마크 할 수 없다
ASP에는 3가지 페이지 이동 메서드가 존재한다
#server.Execute("파일명.ASP", 개체명)
특정페이지를 함수처럼 사용하고
다시 원래 페이지로 돌아옴
#server.transfer("파일명.ASP") : 주소(URL)는 그대로, 결과만 반환
JSP의 forward와 비슷하다
1. 주소값을 가지고 같은 서버내에서 asp페이지에 이동을 하고 결과를 클라이언트에게 보냄
(덕분에 redirect보다 속도가 빠름, 그러나 서버에서 처리되고 클라이언트는 기록이 없기 때문에 뒤로가기 불가)
2. 그렇기 때문에 URL변화 없음, 쿼리문자열과 폼에 존재하는 변수도 유지됨
request, response가 유지됨(객체 재사용 가능)
(get방식 사용불가, 변수 넘기기 불가, get방식은 전송후 URL이 변하기 때문에)
3. 같은서버 내에서 처리하기 때문에 외부 페이지에 이동할 수 없고, 서버 내의 asp페이지 내에서만 이동 가능
server.transfer는 JSP로 forward랑 비슷하다 보면 된다
동작방식
1.브라우저에서 서버에 요청(request)
2.서버가 응답(response), 요청된 주소를 따라 "같은서버 내에서 해당 주소로 이동" 후 결과를 브라우저에 반환
3.브라우저는 결과를 표시함
#response.redirect("파일명.ASP", FALSE) : 주소(URL)와 결과를 반환
1. 서버에서 주소값을 클라이언트로 보내서 클라이언트가 받은 주소로 페이지를 찾아감
(transfer에 비해 작업이 늘기 때문에 속도는 떨어짐)
2. 클라이언트 쪽에서 이동하기 때문에 같은서버 내의 페이지 뿐만아니라
외부 서버 페이지에 이동도 가능(클라이언트에 기록이 있기 때문에 뒤로가기 가능)
3. URL이 변화 있기 때문에 유저가 갱신된 URL을 볼 수 있다.
request, response객체가 새롭게 생성 됨(객체 재사용 불가)
post, get방식 사용가능, get변수 넘기기 가능
동작방식
1.브라우저에서 서버에 요청(request)
2.서버가 응답(response), 다른페이지로 이동하라고 주소를 브라우저에 보냄
3.브라우저는 받은 주소로 이동
4.브라우저는 결과를 표시함
#가장 많이 사용되는 transfer(forward)와 redirect의 차이를 요약
transfer(forward)는 서버가 주소로 이동해서 얻은 결과를 브라우저에 반환(URL 그대로, 객체(변수) 그대로)
redirect는 서버가 주소를 브라우저에 주면 브라우저가 이동해서 결과를 얻음(URL바뀜, 객체(변수) 새로 생성됨)
transfer(forward)는 객체가 유지되기 때문에 DB에 변화가 없는 검색, 리스트와 같은 SELECT처리에 적합하고
redirect는 객체가 새로 생성되기 때문에 글쓰기, 수정, 삭제와 같은 INSERT, UPDATE, DELETE처리에 적합하다
transfer(forward)는 객체가 유지되기 때문에 새로고침을 하면 글쓰기가 2번 등록되거나 함
'Programming > C#' 카테고리의 다른 글
[C#] 확장 메서드 (0) | 2020.12.23 |
---|---|
[C#] MSSQL 연결 후 SQL 실행 (0) | 2020.12.23 |
[C#] 접근제한자 (0) | 2020.12.18 |
[C#] namespace란 (0) | 2020.12.18 |
[C#] abstract, interface, virtual (0) | 2020.12.18 |