일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- MVC
- classdiagram
- FrontController
- tiles
- pattern
- getParameter
- system developer
- jsp
- Spring
- backend
- 맥린이
- controller
- Framework
- Agile
- Program
- ERD
- 프롬프트
- DevOps
- setAttribute
- mybatis
- NOTE
- App
- 내장객체
- HTTP
- Cloud
- handlerMapping
- getAttribute
- UML
- usecasediagram
- command
Archives
- Today
- Total
시작은 언제라도
3. FrontControllerServlet ex3 본문
public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {
String command = request.getParameter("command");
Controller c= HandlerMapping.getInstance().create(command);
try {
String view= c.execute(request, response);
request.getRequestDispatcher(view).forward(request, response);
} catch (Exception e) {
response.sendRedirect("error.jsp");
e.printStackTrace();
}
}
HandlerMapping을 추가함으로, Front Controller의 코드를 간결하게 만들었다. 사장님은 이제 이 ex3 서블릿에서 excute(req,res)만 해주면 된다는 소식에 사장님들은 굉장히 기뻐한다.
//singleton pattern 적용됨
public class HandlerMapping {
private static HandlerMapping instance= new HandlerMapping();
private HandlerMapping() {}
public static HandlerMapping getInstance() {
return instance;
}
public Controller create(String command) {
Controller c = null;
if(command.equals("FindCar")) {
c=new FindCarController();
}
return c;
}
}
HandlerMapping:
이제 기존에 FrontController에서 하던 routing은 HandlerMapping이 맡는다구, 이 command는 FindCar과 일치해서 findcar메서드를 써줘야 되는군. FindCarController로 보내줘,
public class FindCarController implements Controller{
@Override
public String execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
String url = null;
String carNo = request.getParameter("carNo");
String carInfo = MockDAO.getInstance().findCarInfo(carNo);
if(carInfo==null) {
url="findcar-fail.jsp";
}else {
url="findcar-ok.jsp";
request.setAttribute("carInfo", carInfo);
}
return url;
}
}
FindCarController :
사장님(frontcontroller)이 execute를 명령했다구? 어디보자 command의 value가 FindCar과 일치하네, 그럼 내가 일할 차례군.
request.getParameter("carNo")로 손님의 차번호를 확인했는데 MockDAO에 존재하는 차번호군, 자 결과는 findcar-ok.jsp에서 확인하도록 하겠습니다, 그전에 servlet과 jsp 사이에선 String 값으로만 이동가능하니 requeset.setAttribute("carInfo",carInfo)로 jsp에 넘겨주도록 하겠습니다 손님.
'Web programming > Patterns' 카테고리의 다른 글
Model2 MVC Pattern (0) | 2021.04.20 |
---|---|
Command Design Pattern (0) | 2021.04.18 |
2. FrontControllerServlet ex2 (0) | 2021.04.18 |
1. FrontControllerServlet ex1 (0) | 2021.04.18 |
Design Pattern 이란? (0) | 2021.04.18 |