Servlet, JSP

최지홍·2022년 3월 22일
0

매일 공부

목록 보기
28/40

Servlet

  • 자바를 사용하여 웹페이지를 동적으로 생성하는 서버 사이드 프로그램
  • 자바 클래스의 일종으로 구현 시 Servlet 인터페이스를 구현
  • Servlet 인터페이스의 구현이 용이하도록 GenericServlet, HttpServlet 추상클래스 존재
  • 서블릿: HTML in Java
  • JSP: Java in HTML

Servlet Life Cycle

  • 서블릿 클래스는 서블릿 컨테이너에 의해 관리된다.
  • 클라이언트가 요청 시 서블릿 객체를 생성하고 초기화하는데 생성과 초기화는 딱 한번만 이루어진다.
  • 요청 마다 service()를 반복 실행하여 요청을 처리한다.
  • init(): 초기화
  • service(): 서비스 요청 시 → doGet(), doPost() 호출
  • doGet(): GET 방식으로 data 전송 시 호출
  • doPost(): POST 방식으로 data 전송 시 호출
  • destory(): 서블릿이 메모리에서 해제되면 호출

Parameter 전송

MVC

  • 자바 Bean: 자바 모듈, 자바 컴포넌트
  • JSP: 디자인, 로직이 합쳐진 형태로 속도가 빠르나 종속되는 문제 → 로직을 처리하는 Model과 디자인을 담당하는 View로 나누고 이 둘 사이를 매핑하는 Mapper인 Controller 추가
  • 웹 컨테이너: 서블릿, JSP, 서버 사이드 코드 관리. 서블릿 객체를 생성하고 생명주기를 관리하며 요청과 응답 객체를 관리하고 URL을 매핑한다.

JSP

  • 실행 시 서블릿으로 변환이 일어남
  • Scriptlet 언어와 Compile 언어의 장점을 모두 가지고 있음 → 작성 시엔 Scriptlet, 실행 시엔 Compile
  • HTML 내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 돌려주는 언어

스크립팅 요소

  • 선언(Declaration): 멤버변수(전역변수) 선언이나 메서드 선언
    • <%! 멤버변수 or 메서드 선언 %>
    • 멤버변수 이므로 코드의 제일 상위 클래스 이름 밑에 위치
  • 스크립트릿(Scriptlet): 클라이언트 요청 시 매번 호출되는 영역으로, service() 메서드에 해당되는 영역. request, response에 관련된 코드를 구현한다.
    • <% 자바 코드 %>
  • 표현식(Expression): 데이터를 브라우저에 출력할 때 사용(HTML 내에 삽입)
    • <%= 문자열 %> → <% out.println() %>와 같음
  • 주석(Comment):
    • <%— —%>
    • HTML 주석과 혼용하면 안됨. HTML 주석은 HTML 소스까지 가지만 JSP 주석은 가지 않음.

지시자

  • page: 현재 JSP 페이지 처리 방법 정보 제공
  • include: 특정 파일을 JSP 페이지에 포함
  • taglib: 사용자 정의 커스텀 태그

기본 객체

  • request: HTML 폼 요소의 값을 읽어올 때 사용
  • response: 응답 처리시 사용
  • pageContext: 기본 객체를 얻거나 forward, include 기능 활용할 때 사용
  • session: 세션 정보 처리
  • application: 애플리케이션 처리와 관련된 정보 처리
  • out: output 스트림 처리에 사용
  • config: 초기화 환경 처리
  • page: 현재 JSP 페이지에 대한 참조 변수

Scope

  • pageContext
    • 하나의 JSP 페이지를 처리할 때 사용되는 영역
    • 한번의 클라이언트 요청에 하나의 JSP 페이지가 호출되며 이때 단 한 개의 page 객체만 대응
    • 페이지 영역에 저장한 값은 페이지를 벗어나면 사라짐
  • request
    • 하나의 HTTP 요청을 처리할 때 사용되는 영역
    • 웹 브라우저가 요청 할 때마다 새로운 request 객체 생성
    • request 영역에 저장한 값은 요청에 대한 응답이 완료되면 사라짐
  • session
    • 하나의 웹 브라우저와 관련된 영역
    • 같은 웹 브라우저 내에서 요청하는 페이지들은 같은 session 들을 공유(로그인 같은)
  • application
    • 하나의 웹 애플리케이션과 관련된 영역
    • 웹 애플리케이션 당 1개의 애플리케이션 객체가 생성됨
    • 같은 웹 애플리케이션에서 요청되는 페이지들은 같은 application 객체를 공유
  • forward vs sendRedirect
    • forward: 동일 서버 내 경로로 이동하며 기존 URL을 유지하여 실제 이동 주소 확인이 불가하다. 기존의 request와 response가 그대로 전달되며 비교적 빠르다.
    • sendRedirect: 동일 서버 포함 타 URL이 가능하며 이동하는 page로 주소가 변화한다. 기존의 request와 response는 소멸되고 새로운 request와 response가 생성되며 forward()에 비해 느리다. request로는 data 저장이 불가능하여 session이나 cookie를 사용한다.
profile
백엔드 개발자가 되자!

0개의 댓글