웹 서버(2)

9mond·2023년 8월 17일
0
post-thumbnail
post-custom-banner

1. 정적 페이지

  • static pages
  • image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들을 의미.
  • 웹 서버에서 요청에 알맞은 파일을 반환하며, 항상 동일한 페이지를 반환한다.
  • 말 그대로 정적인 컨텐츠
  • 웹 서버에서 제공한다.

2. 동적 페이지

  • 들어온 요청에 맞게 동적으로 만들어진 컨텐츠를 의미.
  • 데이터베이스, 서버 내 로직 등을 활용해 만들어진 컨텐츠를 반환한다.
  • 웹 어플리케이션 서버에서 제공한다.

3. 서블릿(Servlet)

  • WebServer에서 HTTP요청을 받고 Static Contents를 제공하는 서버.
  • HTTP프로토콜을 기반으로 하여 클라이언트의 요청을 서비스하는 기능을 담당한다.
  • 데이터베이스 접속 기능, 여러 개의 트랜잭션(데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위) 관리 등을 수행.
  • 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술.
  • Servlet이란 자바를 사용하여 웹을 만들기 위해 필요한 기술.
  • 서블릿 객체도 싱글톤 으로 관리되기 때문에 최초 요청 시점에 서블릿 객체를 초기화해서 서블릿 컨테이너에 보관하고 이후에는 같은 서블릿을 공유해서 사용
    • JSP
      • HTML 안에 Java 코드
      • 뷰 처리
    • 서블릿
      • Java 코드 안에 HTML
      • 텍스트로직 처리

3-1. 요청 순서

  • 사용자(클라이언트)가 URL을 입력하면 HTTP Request가 Servlet Container로 전송한다.
  • 요청을 전송받은 Servlet Container는 HTTPServletRequest, HTTPServletResponse 객체를 생성한다.
  • web.xml을 기반으로 사용자가 요청한 URL이 어느 서블릿에 대한 요청인지를 찾는다.
    ( 지금은 이렇게 사용을 안하지만 내부는 이렇게 돌아간다. 이것을 좀더 편하게 사용하는 방식이 있을 뿐. )
  • 해당 Servlet에서 Service 메서드를 호출한 후 클라이언트의 get, post 여부에 따라 doGet() 또는 doPost()를 호출한다.
  • doGet() 또는 doPost() 메서드는 동적 페이지를 생성한 후 HTTPServletResponse 객체에 응답을 보낸다.
  • 응답이 끝나면 HTTPServletRequest, HTTPServletResponse 두 객체를 소멸시킨다.

3-2. class 생성, 연동

Java Resources 파일 선택
-> new java class 생성
-> 뒤에 extends HttpServlet 붙여넣기
-> servlet-api.jar 파일 복사
-> lib폴더에 붙여넣기
-> day01에 우클릭, propertice
-> java build path
-> libraries
-> classpath
-> add jars
-> sevlet-api... 선택 후 ok
-> apply, apply and close

4. Get 방식과 Post 방식

4-1. Get 방식

  • 서블릿에 데이터를 전송할 떄 데이터가 URL 뒤에 name=value 형태로 전송
  • 보안에 취약
  • 전송 가능 데이터가 최대 255자(길이가 유한하다.)
  • 기본 전송 방식으로 사용이 쉽다.
  • 웹 브라우저에서 직접 입력하여 전송 가능
  • 여러 개의 데이터를 전송할 때 "&"로 구분해서 전송 가능
  • doGet() 방식으로 처리 가능

4-2. Post 방식

  • 서블릿에 데이터를 전송할 때 TCP/IP 프로토콜 데이터의 HEAD 영역에 숨겨진 채 전송
  • 보안에 유리
  • 전송 데이터 용량 무제한
  • 전송 시 서블릿에서 또 다시 가져오는 작업이 필요하므로 Get 방식보다는 처리 속도가 느리다.
  • doPost() 방식으로 처리 가능
profile
개발자
post-custom-banner

0개의 댓글