Sevlet 개념

밍키·2023년 10월 12일
0

Spring Framework

목록 보기
3/5
post-thumbnail

Web Application의 특징

  • Client는 Server에게 서비스를 요청(HTTP)방식
  • Server는 요청을 처리한 결과를 HTML 형태로 작성하여 Client에게 반환
  • Client는 서버에서 전송된 HTML을 화면에 표시

Web Server

  • 서버 기술
  • 서버에서 웹 서비스를 제공하는 소프트웨어
    --> 아파치 , 마이크로소프트 IIS 등등
  • Servlet , JSP , Spring : 자바 기반의 서버 프로그래밍 기술
  • 클라이언트 기술
  • Web Browser : 웹서비스를 이용하기 위한 클라이언트 소프트웨어
    --> Chrome , Microsoft Edge , FireFos , 애플 Safari등
  • HTML : 웹 서비스를 제공하기 위한 표준언어
  • JavaScript : HTML 웹 페이지의 동적인 기능을 제공하는 스크립트 언어
  • CSS : HTML에서 layout이나 디자인 요소를 분리
  • HTTP 프로토콜
  • 웹 서버와 클라이언트 사이의 통신 규약

정적 웹 프로그래밍

  • 웹서버에 HTML페이지 CSS 이미지 자바스크립트 파일을 저장해 놓고 브라우저 에서 요철 할 경우 그대로 전달 하는 방식
  • 사용자는 페이지가 변경되지 않는 한 고정된 웹 페이지를 액세스
  • 실시간으로 변하는 환율 정보나 주가 정보를 제공하기 위해서는 관리자가 수 작업으로 HTML 코드를 주기적으로 업데이트 해야함
  • 환율 정보나 주가정보등 실시간 정보를 표시할 때는 적합하지 않다

동적 웹 프로그래밍

  • 정적 웹프로그래밍에서 관리자의 역할을 Web Application Server가 수행한다 (WAS)
  • 클라이언트의 요청이 있을 때마다 데이터베이스의 실시간 정보를 이용하여 HTML파일을 동적으로 생성한 후 클라이언트 에게 전송

CGI 방식

  • 초기 웹 프로그램에서 사용하는 방식으로 각 클라이언트 요청이 별개의 프로세스 에서 실행
  • 사용자 수가 급격히 늘고 기능이 복잡해지면 메모리 과부하 문제 발생

Container 방식

  • 하나의 웹서비스에 대한 실행 코드는 하나만 메모리에 존재
  • 그 서비스를 요청하는 Client 마다 별도로 스레드를 생성 하여 실행
  • 대표적인 Servlet Container는 Tomcat , Glassfish , Websphere , JBoss , WebLogic이 존재한다

정리

  • Web application은 browser web server 사이에 HTTP를 이용하여 서비스 요청과 처리가 이루어진다
  • 최근의 web application 개발은 container 방식의 동적 웹 프로그래밍을 따른다

Servlet 이란?

  • 서버 쪽에서 실행 되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 JAVA class

특징

  • 자바를 기반으로 하므로 Java API를 모두 사용할수있다
  • Servlet Container에서 실행된다
    --> 멀티 스레드 방식으로 실행
  • Container 종류에 상관없이 실행
  • 웹 애플리케이션에서 효율적인 자료 공유방법을 제공한다

역할

  • 통신 지원
  • Servlet과 Web Server가 통신할수있는 손쉬운 방법을 제공
  • Container가 없으면 servlet 개발자는 server와의 소켓 프로그래밍을 수행

Servlet의 생명주기 관리

  • Servlet class 로딩 -> 초기화 메소드 호출 -> 클라이언트 요청에 대한 Servlet메소드 호출 -> Servlet 사용이 끝나는 시점에 garbage collection

Multithreading 지원

  • 하나의 servlet에 대한 여러개의 클라이언트 요청을 처리하기 위한 스레드 생성 및 운영 지원

JSP 지원

  • JSP를 Servlet으로 변환

Servlet API 계층 구조와 기능

  • Generic Servlet 추상 클래스는 Servlet과 ServletConfig 인터페이스를 구현
  • HttpServlet은 Generic Servlet 추상클래스를 상속받음
  • HTTP프로토콜 지원이 포함되어 일반적인 웹 프로그램에 적합
  • HTTPServletRequest와 HTTPServletResponse만 지원
  • HTTP프로토콜에는 GET , POST , PUT , HEAD , DELETE , OPTIONS , TRACE와 같은 요청이 정의 되어있으며 서블릿에도 각각 doGet() , doPost()와 같은 대응 메서드가 존재한다

GET방식 , POST 방식

GET 방식

  • 서버에 있는 정보를 클라이언트로 가져오기 위한 방법 이다
  • HTML , 이미지등을 웹 브라우저에서 보기위한 요청
  • QUERY_STRING환경변수를 통해서 서버로 전달
    --> http://www.xxx.co.kr/servlet/login?id=hj&name=hong
  • '?' 문자 이후의 값들은 서버에서 QUERY_STRING을 통해 전달된다 , '속성 = 값' 형태로 사용해야 하며 '&'는 여러 속성값을 전달할때 연결해주는 문자열이다
  • URL 노출되기 때문에 보안에 문제가 생길 수 있다

POST 방식

  • 서버로 정보를 올리기 위해 설계된 방법이다
    --> HTML폼에 입력한 내용을 서버에 전달하기 위한 요청
  • 서버에 전달할수있는 데이터 크기에는 제한이 없다
  • URL에는 매개변수가 표시 되지 않는다

Servlet의 생명 주기

  • 서블릿 초기화 : init() 메소드

  • Servlet 실행시 호출되며 초기에 한번만 실행

  • 공통적으로 필요한 작업 등 수행

  • 요청/응답 : service() 메소드

  • 사용자 요청에 따라 스레드로 실행되는 메서드

  • service() 메소드를 통해 doGet() 혹은 doPost() 메소드가 호출

  • HttpServletRequest와 HTTPServletResponse인자를 이용하여 사용자 요청을 처리

  • 서블릿 종료 : destroy() 메소드

  • 컨테이너로 부터 Servlet 종료 요청이 있을때 호출

  • init()과 마찬가지로 한번만 실행 되며 , servlet이 종료되면서 정리할 작업이 있다면 destroy() method를 오버라이딩

Servlet에서 웹 페이지 이동

  • Forward 기능 : 하나의 servlet에서 다른 servlet이나 JSP와 연동
  • Request에 대한 추가 작업을 다른 servlet에게 수행
  • Request에 포함된 정보를 다른 servlet이나 JSP와 공유
  • Request에 정보를 포함 시켜 다른 servlet에 전달
  • 모델2 개발 시 servlet에서 JSP로 데이터를 전달 할 때 사용
  • forward 방법
  • HTTPServletResponse 객체의 sendRedirect()메서드를 이용

  • 웹 브라우저에 재요청 하는 방식

  • 형식 : response.sendRedirect("포워드할 서블릿 또는 JSP")

  • RequestDispatcher 클래스의 forward()메서드를 이용

  • 일반적인 forward 기능을 지칭하며 , servlet이 직접 요청하는 방식

  • RequestDispatcher dis = request.getRequestDispatcher("포워드할 서블릿 또는 JSP")

  • dis.forward(request , response)

profile
밍키의 개발 일기장

0개의 댓글

관련 채용 정보