Servlet & JSP

mingggkeee·2022년 3월 22일
0

Web Architecture

Servlet

  • 자바를 사용해서 웹페이지를 동적으로 생성하는 프로그램
  • 웹 서버의 성능을 향상시키기 위해 사용되는 자바 클래스의 종류이다.
  • JSP와 다른 점은 JSP가 HTML 문서 안에 Java 코드를 포함하고 있으나, 서블릿은 자바 코드 안에 HTML을 포함하고 있다는 차이점이 있다.

Servlet Life-Cycle

  • Servlet class는 main 메서드가 없다. 즉 객체의 생성부터 사용의 주체가 사용자가 아닌 Servlet Container에게 있다. Client가 Request하게 되면 Servlet Container는 Servlet 객체를 생성(단 한번만)하고, init(단 한번만) 하며 요청에 대한 처리를 하게 된다. 객체 제거 또한 Container가 담당한다.

주요 메서드

  • init() : Servlet이 메모리에 로드 될 때 한번 호출
  • doGet() : GET방식으로 data전송 시에 호출
  • doPost() : POST방식으로 data전송 시에 호출
  • service() : 모든 요청은 service()를 통해서 do???() 메서드로 이동된다.
  • destroy() : Servlet이 메모리에서 해제될 때 호출

GET VS POST

JSP(Java Server Page)

  • JSP는 HTML내에 자바 코드를 삽입해 웹 서버에서 동적으로 웹페이지를 생성하여 웹 브라우저에 돌려주는 언어이다. WAS에서 동작.
  • JSP는 실행시에 Servlet으로 변환된 후 실행되므로 거의 유사하다고 볼 수 있으나, Servlet과는 달리 HTML 표준에 따라 작성되므로 웹 디자인에 편리하다.

JSP 스크립트 요소

  • 선언 (Declaration)
    멤버변수 선언이나 메서드를 선언하는 영역

    <%! 멤버변수나 메서드 작성 %>

  • 스크립트릿 (Scriptlet)
    Client 요청 시 매번 호출 영역으로, Servlet 변환 시에 service() 메서드에 해당되는 영역이다. request, response에 관련된 코드 구현 부분

    <% 자바 코드 %>

  • 표현식 (Expression)
    데이터를 브라우저 출력할 때 사용
    문자열 뒤에 세미클론 작성 X

    <%= 문자열 %>

  • 주석 (Comment)
    코드 상에서 부가 설명을 작성

<%-- comment --%>

JSP 지시자

  • page Directive : 컨테이너에게 현재 jsp페이지를 어떻게 처리할 것인지에 대한 정보 제공

    <%@ page attr1="val1" attr2="val2" ... %>

    • language : 사용할 언어 지정
    • contentType : 브라우저로 내보내는 내용의 MIME 형식 지정 및 문자 집합 지정
    • import : 현재 jsp 페이지에서 사용할 java 패키지나 클래스 지정
    • autoflush : 버퍼의 내용을 자동으로 브라우저로 보낼 지에 대한 설정
    • extends : 현재 jsp페이지를 기본적인 클래스가 아닌 다른 클래스로 부터 상속하도록 변경
  • include Directive : 특정 jsp을 페이지에 포함

    <%@ include file="./sample.jsp" %>

  • taglib Directive : JSTL 또는 사용자에 의해서 만든 커스텀 태그를 이용할 때 사용, jsp 페이지 내의 불필요한 자바 코드를 줄일 수 있다.

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

JSP 기본객체

  • request : HTML 폼 요소의 선택 값 등 사용자 입력 정보를 읽어올 때 사용
  • response : 사용자 요청에 대한 응답을 처리하기 위해 사용
  • pageContext : 각종 기본 객체 얻어오기, forward 및 include 기능 활용
  • out : 사용자에게 전달하기 위한 output 스트림을 처리할 때 사용

Request의 parameter vs Attribute

  • parameter
    • client의 요청이 있을 때 생성된다. 서블릿에서 인위적으로 프로그래밍을 통해 만드는 것은 불가능
    • 데이터 타입은 String만 가능
  • Attribute
    • 서블릿에서 필요에 따라 생성
    • 데이터 타입은 Object. 즉 뭐든지 담을 수 있다.

MVC Architecture

  • Model : business logic(db 연동 등...)
  • View : presentation logic
  • Controller : 길잡이..?
  • model 1 vs model 2 : controller를 누가 담당할 것인가?

model1 : controller를 jsp가 담당
model2 : controller를 servlet이 담당
실무에서는 model2 사용

profile
만반잘부

0개의 댓글