- 프론트 컨트롤러 서블릿 하나로 클라이언트 요청을 받는다.
- 프론트 컨트롤러가 클라이언트의 요청에 맞는 컨트롤러를 찾아 호출해준다.
- 컨트롤러에 대한 공통 로직에 처리가 가능하다.
- 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다.
http://localhost:8080/project01/abc.jsp
📌 ${pageContext.request.requestURL}
📌 ${pageContext.request.schema}
⇢ http
📌 ${pageContext.request.serverName}
⇢ localhost
📌 ${pageContext.request.serverPort}
⇢ 8080
📌 ${pageContext.request.requestURI}
⇢ project01/abc.jsp
📌 ${pageContext.request.servletPath}
⇢ /abc.jsp
📌 ${pageContext.request.contextPath}
<%=request.getContextPath() %>
⇢ 현재 나의 위치
EX)
package com.codingbox.web.user;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.codingbox.web.user.action.ActionForward;
@WebServlet("*.us")
public class UserFrontController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req,
HttpServletResponse resp) throws ServletException, IOException {
doProcess(req, resp);
}
@Override
protected void doPost(HttpServletRequest req,
HttpServletResponse resp) throws ServletException, IOException {
doProcess(req, resp);
}
protected void doProcess(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String requestURI = request.getRequestURI();
String responseURI = null;
ActionForward forward = null;
if(requestURI.equals("/user/UserJoin.us")) {
forward = new UserJoinAction().excute(request, response);
} else if(requestURI.equals("/user/UserLogin.us")) {
forward = new ActionForward(false, "/user/loginview.jsp");
} else if(requestURI.equals("/user/UserLoginOk.us")) {
System.out.println("front 도착");
forward = new UserLoginOkAction().excute(request, response);
}
// 일괄처리
if( forward != null ) {
if( forward.isRedirect() ) {
// redirect 방식으로 페이지 이동
response.sendRedirect( forward.getPath() );
} else {
// forward 방식으로 페이지 이동
RequestDispatcher disp
= request.getRequestDispatcher( forward.getPath() );
disp.forward(request, response);
}
}
}
}