특징
- 스프링 FC에는 HandlerMapping라는 멤버변수가 있다.
- POJO이다.
- 특정 키 값에 대해 특정 값을 반환해준다.
- Map의 특징
private Map<"key", "value"> 변수명;
- getAction()에서 값을 가져오기 위해 자체 메서드인 HandlerMapper()을 이용한다.
- 대표적인 Factory패턴을 사용하는 클래스이다.
역할
- 사용자의 요청정보에 알맞는 Controller(객체)를 반환해준다.
예제
FC
@WebServlet("*.do") // new 가 사실은 작성되어있었던것!!!!!
public class FrontController extends HttpServlet {
private static final long serialVersionUID = 1L;
private HandlerMapper handler;
public FrontController() {
super();
handler=new HandlerMapper();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doAction(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doAction(request, response);
}
private void doAction(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uri=request.getRequestURI();
String cp=request.getContextPath();
String commend=uri.substring(cp.length());
System.out.println("FC : "+commend);
Action action=handler.getAction(commend);
// 나한테 Action 객체주라~~
// => 팩토리 패턴 : 요청에 대해 알맞는 객체를 반환하는 패턴
// HM 가 가장 대표적인 팩토리 패턴을 활용하는 클래스
ActionForward forward = action.execute(request, response);
if(forward.isRedirect()) {
response.sendRedirect(forward.getPath());
}
else {
RequestDispatcher dispatcher=request.getRequestDispatcher(forward.getPath());
dispatcher.forward(request, response);
// pageContext.forward(forward.getPath());
}
}
}
HandlerMapper
@WebServlet("*.do") // new 가 사실은 작성되어있었던것!!!!!
public class FrontController extends HttpServlet {
private static final long serialVersionUID = 1L;
private HandlerMapper handler;
public FrontController() {
super();
handler=new HandlerMapper();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doAction(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doAction(request, response);
}
private void doAction(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uri=request.getRequestURI();
String cp=request.getContextPath();
String commend=uri.substring(cp.length());
System.out.println("FC : "+commend);
Action action=handler.getAction(commend);
// 나한테 Action 객체주라~~
// => 팩토리 패턴 : 요청에 대해 알맞는 객체를 반환하는 패턴
// HM 가 가장 대표적인 팩토리 패턴을 활용하는 클래스
ActionForward forward = action.execute(request, response);
if(forward.isRedirect()) {
response.sendRedirect(forward.getPath());
}
else {
RequestDispatcher dispatcher=request.getRequestDispatcher(forward.getPath());
dispatcher.forward(request, response);
// pageContext.forward(forward.getPath());
}
}
}
'웹 > JAVA' 카테고리의 다른 글
[JAVA] web.xml (0) | 2024.01.18 |
---|---|
[JAVA] Listener와 Filter (0) | 2024.01.18 |
[JAVA] 동적 크롤링 (0) | 2024.01.15 |
[JAVA] <Servlet> sendRedirect와 forward (0) | 2024.01.08 |
[웹] 파비콘 (0) | 2023.12.27 |