203.02.06 / Java Servlet

기가지니·2023년 2월 6일
1

Java Servlet

Java 웹페이지(HTML, CSS, Javascript)를 동적으로 생성하는 Java program

기본개념 및 용어

① Internet

network of network ➡️ 물리적인 infrastructure

② Service

internet상에서 동작하는 여러가지 응용프로그램들
ex) 대표적으로 Email, www, Torrent

③ IP adress

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)

④ DNS(Domain Name System/Domain Name Server)

IP adress는 "숫자"를 "문자"로 변환시켜서 사용하면 편할거 같아요!
ex) www.naver.com ↔️ (DNS가 숫자로 변환) ↔️ 111.11.11.1 ↔️ mac adress

⑤ Port : 숫자(0~65535)

computer 내에 실행되고 있는 프로그램에 할당된 번호
모든 process(프로그램)이 다 가지고 있는건 아니에요!
Network 통신에서 한 computer의 process가 다른 computer의 process를 식별하기 위한 수단

  • 하나의 process가 Network으로 연결된 다른 process와 데이터 통신을 하려면?
    IP adress port 데이터 통신 규칙(규약) -> Protocal
    형식 : protocal :// IP : port🌟

⑥ Hypertext

사용자의 선택에 따라 관련된 정보쪽으로 옮겨갈 수 있도록 만들어진 조직화된 정보(하이퍼링크 라고도 함)
HTML Element -> a href=""

⑦ WWW(world wide web)

internet위에서 동작하는 Service

⑧ protocal

데이터 통신을 위해 정해놓은 통신규약
www상에서 사용되는 대표적인 protocal => HTTP(hypertext transfer protocal)

http protocal은 server-client구조

clinet ↔️ request/response ↔️ server

왜 이런구조로 통신하나요?
server는 소수, client가 절대 다수

⑨ Rest(Representational State Transfer)

자원을 이름으로 구분해서 자원의 정보를 주고 받는것을 의미
자원의 정보를 전송할때는 일반적으로 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작성 규칙"을 준수해야 한다

⑩ SOAP(Simple Object Access Protocal)

web과 잘 맞지 않아요
일반적인 network program에 활용(보안적인 측명이 강해요)

⑪ Web browser(Web Client)

⑫ Web Server

⑬ HTTP Request

3부분으로 나눠짐

  • Request Line⭐
    : DELET, GET, PODT, PUT + URL
  • Request header
    : 부가적인 정보
  • Request body⭐
    : GET을 제외한 나머지 => 클라이언트가 서버에 보대는 data(key=value형태)

⑭ HTTP Response

  • State line
    : HTTP/1.1(verson) ✓ 200(상태코드) ✓ OK(상태설명)
  • Response header
    : 부가적인 잡다한 정보들
  • Responst body
    : 결과 HTML, json, xml 등

@환경설정
현재 우리가 사용하는 java11버전,
우리도 나중을 위해 현업에서 많이 쓰는 java 8로 다운그레이드 하자
java8 다운로드

  • web project생성
    1) static web project
    2) ⭐dynamic web project(Servlet)
    생성할 때 context root
    =>web상에서 우리 프로젝트에 대한 identifier(식별자)역할을 함

web project는 설정이 필요함
− XML파일 설정
− annotation(@~~)으로 설정(servlet 3.0부터 사용 가능)
: 일반적으로 선호하는 방식

❗프로젝트를 완성하고 web에 deploy해서 client가 이용할 수 있게끔 서비스 해보자
=> web server가 있어야 해요(Apache, NginX)
Apache Tomcat을 사용해보자!

  • java program servlet
  • Servlet 동작과정
2. HttpServletRequest, HttpServletResponse 객체 생성
3. Web.xml이 어느 서블릿에 대해 요청한 것인지 탐색
4. 해당하는 서블릿에서 service() 메소드 호출 
5. doGet() 또는 doPost() 호출 
6. 동적 페이지 생성 후 ServletResponse 객체에 응답 전송
7. HttpServletRequest, HttpServletResponse 객체 소멸

servelet instance는 특별하지 않는 한 클라이언트로부터 1개의 메소드만 호출되어 사용(싱글톤)

profile
지니야 코딩 해줘

3개의 댓글

comment-user-thumbnail
2023년 2월 6일

잘 읽고 갑니다~ 다음 글이 기대되네요 ^^

1개의 답글
comment-user-thumbnail
2023년 2월 9일

다음 글 기대할게요 ^^

답글 달기