핑구

00. Servlet/JSP 개요 본문

JAVA 웹 개발/10. Servlet JSP

00. Servlet/JSP 개요

코딩 펭귄 2022. 8. 13. 17:45
📅 2021.10.26

네트워크 통신 개요

  • Server-client Model: 서버는 특정한 서비스를 제공하는 컴퓨터를, 클라이언트는 이러한 서비스를 제공하는 사용자를 말한다. 클라이언트는 서버에게 요청(Request)하고, 서버는 클라이언트에게 응답(Response)한다.
  • Server의 종류
    • Web Server: 웹 브라우저와 HTTP 프로토콜을 사용하여 사용자의 요구에 따른 특정 서비스를 제공하는 서버이다.
    • Mail Server: 인터넷을 통해 사용자 간의 전자 우편을 주고 받는 서비스를 제공하는 서버이다.
    • FTP Server: 서버 내에 파일을 업로드, 다운로드 할 수 있도록 파일 관리 기능을 제공하는 서버이다.
    • Telent Server: Terminal, 텍스트로만 이루어진 창에서 특정 명령어를 통해 원격지 서버를 접속, 관리한다.
    • Database Server: Data를 저장하고, 원격지에서 접속할 경우 권한에 따라 해당 데이터를 열람, 추가, 수정, 삭제 기능 처리를 한다.

 

웹 통신 개요

  • 웹 통신 구조
  • Web Server: 사용자에게 HTML 페이지나 jpg, png 같은 이미지를 HTTP 프로토콜을 통해 웹 브라우저에 제공하는 서버로 내부의 내용이 이미 만들어져 있는 정적인 요소들을 화면에 보여 주는 역할을 한다.
    • 웹 서버의 종류
      • Apache: Apache Software Foundation에서 만든 서버로 HTTP 통신에 대한 여러 라이브러리를 제공한다.
      • Windows IIS: Window OS에서 제공하는 웹 서버로 높은 수준의 보안성과 성능을 제공한다.
      • NGINX: 무료 오픈 소스 서버로 사용자 요청을 스레드가 아닌 확장성이 있는 이벤트 기반 설계로 리솟만 할당해 사용한다.
  • WAS: Web Application Server의 약자로 사용자가 요청한 서비스의 결과를 스크립트 언어 등으로 가공하여 생성한 동적인 페이지를 사용자에게 보여주는 역할을 한다.
    • WAS의 종류
      • tomcat: Apache Software Foundation에서 Servlet과 JSP를 통한 동적인 웹 문서를 처리하기 위해 만든 웹 애플리케이션 서버이다.
      • wildfly: Jboss라고도 불리며 톰캑이 제공하는 Servlet Container뿐만 아니라 EJB Container를 별도로 제공하여 폭 넓은 서비스를 구현한다.
      • jeus: 국산 WAS로 대용량 데이터 트랜잭션을 고성능으로 처리하며 개발 및 운영에 관한 기술 지원이 뛰어나다.
  • 서블릿 컨테이너(Servlet-Container): 서블릿의 생명 주기를 관리(생성, 초기화, 소멸)한다. HttpServletRequest/HttpServletResponse 객체를 생성하고, 요청에 따라 멀티 스레딩을 구성한다. 전송 방식에 따라 동적으로 페이지를 구성하는 작업을 진행한다. 정적 로딩 처리를 진행한다.
  • JSP 컨테이너(JSP-Container): JSP 파일을 다시 java 코드로 변경해주고 class 파일로 전환하여 메모리 공간에 로드한 뒤 실행 가능하게 만드는 작업(Servlet화)을 진행한다. 처리 결과를 HTML 파일로 만들어 주는 작업을 진행한다. 동적 로딩 처리를 진행한다.
  • Web Server와 WAS 비교
    • Web Server
      장점
      • 요청에 대한 결과 페이지만 전송하여 처리 속도가 빠르다.
      • HTML 같은 단순한 문서만으로 구성되어 있기 때문에 구현이 쉽다.
      단점
      • 만들어진 정보만 보여 주기 때문에 서비스가 한정적이다.
      • 문서의 내용이 변경될 경우 직접 수정하여야 하기 때문에 글의 추가, 수정, 삭제가 어렵다.
    • WAS
      장점
      • 여러 데이터를 활용할 수 있기 때문에 서비스가 다양하다.
      • 문서의 내용이 변경되어도 직접 수정하지 않기 때문에 글의 추가, 수정, 삭제가 쉽다.
      단점
      • 데이터를 처리하여 결과를 전송하기 때문에 처리 속도가 느리다.
      • 서비스에 해당하는 소스를 직접 작성하여야 하므로 구현이 어렵다.