220729 servlet에 대해 정리했던 글

2022. 8. 28. 15:10카테고리 없음

  1. Servlet?
    • 직접적으로 파일을 수정하지 않는 이상 수시로 바뀌게 할 수 없는 HTML의 한계로 나온 방법으로, 동적인 문서를 다룰 수 있도록 해준다. (DB에 데이터를 요청하고 받아오면서 동적으로 사용 가능.)
    • 클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그램
  2. 장점
    • 스레드를 기반으로 하므로 웹 어플리케이션 운영에 효율적
    • 자바를 기반으로 하므로 자바 API를 모두 사용할 수 있다.
    • 운영체제나 하드웨어에 영향을 받지 않으므로 한 번 개발된 애플리케이션은 다양한 서버 환경에서도 실행 가능
    • 웹 애플리케이션에서 효율적인 자료 공유 방법을 제공.
  3. 서블릿 컨테이너
    : 서블릿 구조와 클라이언트의 요청이 있을 때 처리하는 순서.
    1. 웹 서버는 클라이언트의 요청을 컨테이너로 전달
    2. 컨테이너는 서블릿이 메모리에 있는지 확인하고 없는 경우 클라이언트의 요청을 처리할 서블릿을 생성하여 스레드로 처리
    3. 서블릿은 JDBC를 이용하여 데이터베이스에 접근할 수 있고 별도로 제작된 자바 클래스를 통해 다양한 기능을 구현한다.
    4. 서블릿에 수행된 결과가 HTML형식으로 클라이언트에 전송된다.
  4. MVC패턴에서 Servlet을 사용할 때의 장점
    • 컨텐츠와 비즈니스 로직을 분리할 수 있다.
    • 컨트롤러와 뷰의 역할 분담으로 인해 웹 디자이너와 개발자 간의 원활한 작업 가능.
    • 유지보수가 수월하다.
    • 기능 확장이 용이하다
    • 프로그래머가 HTML, JSP, StyleSheet 등과 같은 기술들을 모두 알지 않아도 Java로 처리 가능.
      (웹 디자이너는 프로그래밍 기술을 모르더라도 디자인 수정 가능.)
    • JSP 페이지에 HTML, CSS, JSP와 자바 소스 코드가 뒤섞이는 스파게티 소스를 막을 수 있다. 
  5. 서버의 정보를 다루는 방식.
    1. GET 방식
      • 서버에 있는 정보를 가져오기 위해 설계된 방법. (HTML, 이미지 등을 웹 브라우저에서 가져오기.)
      • 서버로 전달할 수 있는 데이터 크기는 최대 1024byte까지 가능. (실제적으로는 웹브라우저의 영향을 받음)
      • QUERY_STRING 환경 변수를 통해 서버로 전달되는데 이때 URL 주소창(물음표 뒷 부분.)에 내용이 노출되기 때문에 보안에 문제가 있을 수 있다. (또, 길이가 너무 길어지면 사용하기 어려움.)
    2. POST 방식
      • 서버로 올리기 위해 설계된 방법. (ex. HTML form에 입력한 내용을 서버로 전달하는 Submit)
      • 서버에 전달할 수 있는 데이터 크기는 제한이 없다.
      • URL에 파라미터가 표시되지 않는다.
  6. 서블릿 생명주기 
    1. 서블릿 로딩: init()
      1. 클라이언트의 요청이 들어오면 컨테이너는 해당 서블릿이 메모리에 있는지 확인.
      2. 메모리에 서블릿이 없을 경우 서블릿을 다시 메모리에 적재하는데 그 때 init()메서드가 호출되며 각종 초기화 작업을 수행한다.
    2. 요청 처리: service()메서드
      1. init()메서드는 최초 한 번만 수행되고 이후 요청은 스레드로 실행된다. 
      2. 각각 service() 메서드를 통해 doGet(), doPost()로 분기된다. 이때 HttpServletRequest와 HttpServletResponse를 매개변수로 전달한다.
    3. 서블릿 종료: destroy()메서드
      1. 컨테이너로부터 서블릿 종료 요청이 있을 때 destroy() 메서드를 호출한다.
  7. 비즈니스 로직?
    • 업무에 필요한 데이터 처리를 수행하는 응용 프로그램의 일부를 말한다. 이것은 데이터 입력, 수정, 조회 및 보고서 처리를 수행하는 루틴, 즉 보이는 것의 그 뒤에서 일어나는 각종 처리를 의미.
    • 클라이언트 프로그램은 사용자 인터페이스와 최소한의 비즈니스 로직으로 구성되며, 서버 프로그램은 대부분 비즈니스 로직만으로 되어있다.