Java 웹페이지(HTML, CSS, Javascript)를 동적으로 생성하는 Java program
network of network ➡️ 물리적인 infrastructure
internet상에서 동작하는 여러가지 응용프로그램들
ex) 대표적으로 Email, www, Torrent
internet 상에 여러개의 computer들이 서로 data를 주고 받아야 해요 > 그러기 위해서 상대방 컴퓨터를 식별할 수 있는 식별자가 필요해요(4자리로 구성된 숫자를 이용)
//초창기에는 IP adress v4. 32bit로 주소를 설정
(0~255.0~255.0~255.0~255 안의 숫자로)
❓ 이런 IP adress를 어디에 할당할까?
NIC(Network Interface Card), 흔히 Lan card
한 computer에 IP adress를 여러개 할당받을 수 있어요
'이런 IP adress는 당연히 정해진 체계가 있어요'
IP adress는 할당을 요청하고 받는 구조이므로 논리적인 주소에요
이런 논리적인 주소를 대신해서 물리적인 주소를 사용해서 통신을 이용해요 :Mac adress
✔️ 대표적 IP adress : 127.0.0.1(loopback 내가 사용하는 컴퓨터)
❓subnet은 뭔가요?
세상이 발전하면서 IP주소가 부족해졌어요 -> IPv6가 나옴
하나의 IP adress를 이용하여 다수의 가상의 IP adress이용(192.168.x.x)
IP adress는 "숫자"를 "문자"로 변환시켜서 사용하면 편할거 같아요!
ex) www.naver.com ↔️ (DNS가 숫자로 변환) ↔️ 111.11.11.1 ↔️ mac adress
computer 내에 실행되고 있는 프로그램에 할당된 번호
모든 process(프로그램)이 다 가지고 있는건 아니에요!
Network 통신에서 한 computer의 process가 다른 computer의 process를 식별하기 위한 수단
IP adress
port
데이터 통신 규칙(규약) -> Protocal
사용자의 선택에 따라 관련된 정보쪽으로 옮겨갈 수 있도록 만들어진 조직화된 정보(하이퍼링크 라고도 함)
HTML Element -> a href=""
internet위에서 동작하는 Service
데이터 통신을 위해 정해놓은 통신규약
www상에서 사용되는 대표적인 protocal => HTTP(hypertext transfer protocal)
http protocal은 server-client구조
clinet ↔️ request/response ↔️ server
왜 이런구조로 통신하나요?
server는 소수, client가 절대 다수
자원을 이름으로 구분해서 자원의 정보를 주고 받는것을 의미
자원의 정보를 전송할때는 일반적으로 json과 xml을 이용함
이런 형태로 동작하는걸 Architecture Style이라 지칭
#이런 rest는 기존의 web의 HTTP방식와 거의 유사
HTTP를 rest로 활용할 수 있어요
🗨️풀어서 얘기해보면 HTTP URI (Uniform Resource Identifier)
: URI를 통해 자원 명시
✔️HTTP의 method(GEt, POST, PUT, DELETE)
✔️자원에 대한 CRUD operation을 적용한 후 결과를 json, xml로 받아요
✔️ rest를 적용하기 위해 별도의 infra가 필요 없어요!
web http protocal을 그대로 이용!(method에 따라 작업이 구분되므로 명확한 코드처리가 가능)
우리가 만약 REST기반의 API를 작성한다고 하면,
"Rest API작성 규칙"을 준수해야 한다
web과 잘 맞지 않아요
일반적인 network program에 활용(보안적인 측명이 강해요)
3부분으로 나눠짐
- Request Line⭐
: DELET, GET, PODT, PUT + URL- Request header
: 부가적인 정보- Request body⭐
: GET을 제외한 나머지 => 클라이언트가 서버에 보대는 data(key=value형태)
- State line
: HTTP/1.1(verson) ✓ 200(상태코드) ✓ OK(상태설명)- Response header
: 부가적인 잡다한 정보들- Responst body
: 결과 HTML, json, xml 등
@환경설정
현재 우리가 사용하는 java11버전,
우리도 나중을 위해 현업에서 많이 쓰는 java 8로 다운그레이드 하자
java8 다운로드
web project는 설정이 필요함
− XML파일 설정
− annotation(@~~)으로 설정(servlet 3.0부터 사용 가능)
: 일반적으로 선호하는 방식
❗프로젝트를 완성하고 web에 deploy해서 client가 이용할 수 있게끔 서비스 해보자
=> web server가 있어야 해요(Apache, NginX)
Apache Tomcat을 사용해보자!
2. HttpServletRequest, HttpServletResponse 객체 생성
3. Web.xml이 어느 서블릿에 대해 요청한 것인지 탐색
4. 해당하는 서블릿에서 service() 메소드 호출
5. doGet() 또는 doPost() 호출
6. 동적 페이지 생성 후 ServletResponse 객체에 응답 전송
7. HttpServletRequest, HttpServletResponse 객체 소멸
servelet instance는 특별하지 않는 한 클라이언트로부터 1개의 메소드만 호출되어 사용(싱글톤)
잘 읽고 갑니다~ 다음 글이 기대되네요 ^^