Server와 Client에 대해 항상 까먹고 궁금점이 자주 생겨서 찾아보던 중 간단, 명료하게 쓰여진 좋은 글을 발견해 퍼왔습니다. 저와 같이 궁금증이 있으신 분들은 이분의 블로그를 꼭 들어가 보기를 바랍니다.
Web <== 통신 ==> Java <== 통신 ==> DB
server :
: 클라이언트의 요청에 따라 웹 페이지를 가져오거나 데이터를 가져오는 등의 응답을 보내는 역할 수행
- WAS : Web Application Syetem - 웹 서버 안에 들어가있음
*server + container
- Server는 크게 server와 container로 구성되어 있다.
- container는 session과 folder를 가지고 있음(파일 저장용)
- server 는 Client의 요청을 받아(request) 필요한 데이터를 전송(response)하는 역할을 수행한다
- server에는 JSP 와 Servlet 이 있다 ( 같은 기능을 수행하며, 돌아가는 프로그램 및 언어가 다르다)
( Servlet : java / JSP : javaScript )
* Servlet & JSP
: Servlet과 JSP는 같은 역할을 수행하지만 (클라이언트의 요청사항을 받아 데이터 가공 및 처리),
구현 방식에 차이가 있다.
Servlet | JSP |
Java -> HTML | HTML -> java |
Business Logic을 짜거나 DB와 통신할 때 좋다 | 화면 구성이 용이하다 |
Controller(MVC) 로 사용하기 좋음 (data processing) | View(MVC)로 사용하기 좋음 |
Servlet이 수정된 경우, Java 코드를 컴파일(.class 파일 생성)한 후 동적인 페이지를 처리하기 때문에 전체 코드를 업데이트 및 재컴파일한 후 재배포 작업이 필요 (개발 생산성 저하) | JSP가 수정된 경우 재배포할 필요가 없이 WAS가 알아서 처리 (쉬운 배포) |
웹 개발을 위한 표준이 존재함 | Servlet를 보완하고 기술을 확장한 스크립트 방식 표준 (Servlet의 모든 기능 + 추가적인 기능) |
참고 사이트 : https://gmlwjd9405.github.io/2018/11/04/servlet-vs-jsp.html
* Servlet : 클라이언트와 서버의 요청과 응답의 순서 알아보기
- client에서 request(요청)이 들어옴
- 요청이 들어오면 서버에서 container 에 들어있는 html코드를 찾는다
- 찾은 코드를 다시 client에게 보내줌 (response)
- server안에 servlet, jsp 내장되어있음
- servlet / JSP 은 client의 요청을 해석하는 역할
- sever는 2가지 방식으로 나뉘어져 있음 (접근영역이 달라짐)
( GET / POST )
- client에서 server로 요청은 url 또는 링크로 전송한다
- 현재 프로젝트를 확인하는 방식 : (주소창) localhost (또는) IPv4 :portnum/project
* Servlet
: Server + Applet
( ※ Node.js : Web <==통신==> DB, 자바없이 바로 웹에서 디비와 통신하는 방식 )
< 방식 >
Web Browser(client) web Application Server(=System) = WAS
(Servlet: *.html, *.jsp, *.php)
client <---- request(요청)------ > Web (Server + Container) <-(MyBatis)-> DB
* request : http://x.x.x.x:8090/project명/index.html
- url예시, 일반적으로 도메인네임 사용
- index라는 이름으로 자동적으로 접속이 됨 ( web.xml 에서 자동 설정된 경우)
* web.xml
- web.xml : server(WAS)가 동작했을 때 자동 초기화되고 세팅되는 데이터
- link (<a>태그 등으로 설정)로 만들 수 있음
* get /post방식
- get : 넘어가는 데이터가 링크에 보이도록 하는 방식, 가벼움 (255바이트까지만 가능)
- post : 넘어가는 데이터가 보안이 적용되어 감추어지는 방식 (로그인 화면 등에서 사용)
- client 쪽에서 method 방식을 설정한다 ( form태그의 method 프로퍼티를 설정 )
참조 : https://sunnnkim.tistory.com/212