* Directory pattern : /name
* 확장자 pattern : /name.확장자
* 위 두 패턴은 처리하는 서블릿 파일이 다르다.
이미지 출처 - www.javatpoint.com/front-controller-pattern
1. FrontController 패턴
클라이언트의 요청들을 한곳에서 처리하여 효율성을 높이는 패턴.
컨트롤러의 앞에 두며 중복 코드를 제거하는데 좋음.
위에서 설명한 확장자 패턴을 이용하면 되는데, 서블릿 파일에서 @WebServlet 어노테이션에 "*.확장자" 를 적용하여 어떤 파일이든 해당 확장자 패턴으로 접속하면 이 서블릿 파일에서 처리를 하는 것이다.
@WebServlet("*.확장자")
2. Command 패턴
어떤 파일이든 확장자 서블릿에서 처리를 한다고 하면, 파일이 많아질 경우에는 소스코드가 상당히 길어질 것이다.
그래서 요청을 받은 이후 각 요청의 직접적인 처리에 대해서는 각각 클래스를 만들어 처리하도록 하는 패턴이다.
만약 모든 파일끼리 중복 코드가 많으면 많을 수록 FrontController 패턴, Command 패턴을 같이 이용했을 경우 효율이 극대화 될 것이다.
3. 포워딩(Forwarding)
정보통신계열에서 라우터끼리 패킷을 전송할 때도 포워딩이라는 용어를 사용하는데 이 Servlet 상에서는 요청을 위임하는 동작을 포워딩이라고 한다. 이처럼 JSP나 Servlet에서 요청을 받고 다른 컴포넌트로 요청을 위임하게 될 때RequestDispatcher, HttpServletResponse 클래스를 이용한다.
1) RequestDispatcher
requeset 객체를, 위임할 컴포넌트에 바로 전달할 수 있게 하는 클래스
RequestDispatcher dispatcher = request.getRequestDispatcher("[경로]");
dispatcher.forward(request,response);
forward 메소드에 의해서, 지정한 경로로 요청이 위임되며 url 변경 없이 해당 파일의 페이지로 이동까지 해준다.
2) HttpServletResponse
주로 Content Type, 응답코드, 응답 메시지 등의 정보를 담을 때 사용한다.
RequestDispatcher 클래스와의 차이점은 요청을 위임받은 컴포넌트에 직접 전달하지 않고 해당 요청이 담긴 새로운 요청객체를 생성한다는 점이다.
response.sendRedirect("[경로]");
sendRedirect 메소드 역시 페이지 이동 시 url 변경은 없다.
'Spring 사전 준비 > JSP Servlet' 카테고리의 다른 글
[JSP Servlet] 게시판 설계 준비과정 (0) | 2020.12.16 |
---|---|
[JSP Servlet] EL / JSTL (0) | 2020.12.14 |
[JSP Servlet] 서버에 파일 업로드하고 확인하기 (5) | 2020.12.06 |
[JSP Servlet] 데이터베이스(2) - DTO/DAO/ConnectionPool (0) | 2020.12.03 |
[JSP Servlet] 예외 페이지 / javabean / JDBC 기초 (0) | 2020.12.02 |
댓글