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개의 댓글

관련 채용 정보