[Web][JSP] 서블릿 Servlet

포키·2023년 5월 15일
0

국비과정

목록 보기
59/73
post-thumbnail

MVC패턴 참고

Servlet 참고



  • DAO (Data Access Object) 패턴
    자바 엔터프라이즈 에디션(JEE) 디자인 패턴의 하나
    레거시에 접근하는 객체들을 따로 만들어두는 것
  • DTO 패턴
    자바 엔터프라이즈 에디션(JEE) 디자인 패턴의 하나
    값을 낱개로 사용하지 않기

서블릿

  • 서버 웹 기술, 자바 웹 표준
  • 기본 메서드 :
    init() - 첫 실행시 사용 (초기화)
    destroy() - 객체 삭제시 사용
    service() - 요청한 작업을 처리하는데 사용
  • 서블릿은 여러개 존재할 수 있다
  • 생성자보다 init(config)
    service()보다 doGet(), doPost()를 사용
    (init(config)는 서블릿 객체 생성시 기본 실행 메서드,
    doGet(), doPost()는 service() 실행시 실행되는 메서드 - method에 따라 호출)

서블릿 생성


서블릿 생성 마법사와 web.xml

  • 서블릿 = 자바이므로 자바 코드와 web.xml을 작성하여 서블릿을 만들 수 있다
    하지만 번거로우므로 서블릿 생성 마법사를 사용한다.
  • 첫 화면에서 패키지와 클래스명을 작성한다. -> 참고할 서블릿 '클래스'
  • 다음 화면에서 서블릿 이름과 설명(옵션), 초기화 패러미터(이름-값), 해당 서블릿을 참조해야 하는 url-pattern(=요청)을 정할 수 있다.
  • load-on-startup
    : 서버 시작과 함께 서블릿을 만들라는 명령 (태그 안 숫자 = 만들어지는 순번)
  • jsp도 servlet도 기본적으로는 첫 요청이 들어왔을 때 만들어진다.
    하지만 servlet은 오래 걸리는(=비용이 비싼) 사전작업이 존재할 수 있다. 이런 경우 미리 만들어두기 위함.

url-pattern 사용의 의미

  • url-pattern 에 해당하는 파일에 접근하면
    servlet-name 을 통해 서블릿 파일의 servlet-class를 찾아 사용한다
  • 주소를 제대로 노출하지 않음.
    폴더도 파일도 없는데도 /fruit/yellow/banana.do 같은 식으로 이름을 붙일 수 있다.
    => fruit 관련 요청을 /fruit/*로 다 받아올 수 있음 (fruit 폴더가 없음에도!)
    => 참조하는 페이지가 존재하지 않아도 있는 것처럼 보여, 사용자가 '파일이 있다'고 착각하게 한다
  • 보안에 좋고, 유저별 페이지 구현에도 편리
  • jsp는 주소별로 연결할 수 있는 jsp 파일이 하나뿐이지만,
    servlet은 다양한 주소에 servlet 파일 하나를 연결 가능
  • .do : 자바 파일 url에 자주 쓰이는 확장자. 파일명=요청을 수행한다는 의미.

init-param의 의미

  • init-param 으로 서블릿 내에서 사용 가능한 패러미터를 정의할 수 있다.
  • config.getInitParameter() or getInitParameter()으로 get

    ContextServlet appliocation의 context-param과 비슷하지만, 패러미터의 사용 범위는 다르다

url 요청명과 jsp페이지 이름을 일치시키는 방법

	request.getRequestURI().substring(request.getContextPath().length());
  • 요청URL(list.do)를 통해 이동할 JSP페이지를 구할 수도 있다(list.jsp)
    = 스프링에서 사용하는 방식 - InternalResourceViewResolver
  • /WEB-INF/ 안에 페이지를 넣어두고 Servlet 코드상에서 forward로 이동

범용 서블릿

  • 하나의 서블릿을 모든 웹어플리케이션에서 사용하려면 - 범용 서블릿이 필요
  • 지금까지 만든 서블릿은 모두 URL(URI)을 받아서 다음 페이지를 결정하고 포워드/리다이렉트한다. 이것을 처리하는 과정에서 의존성을 없애야 한다. (= 어떤 URI에 대해서도 개별처리가 필요하지 않아야 한다.)

범용 서블릿 만들기

  • Command 객체들 (Spring의 Controller와 비슷)
  • CmdFactory (Spring의 HandlerMapping과 비슷)
profile
welcome

0개의 댓글