스프링
MVC이해
e7e
2022. 4. 27. 08:18
DispatchServlet.java
@WebServlet(name = "action", urlPatterns = { "*.do" })
public class DispatchServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private HandlerMapping handleMapping;
private ViewResolver viewResolver;
@Override
public void init() throws ServletException {
handleMapping = new HandlerMapping();
viewResolver = new ViewResolver();
viewResolver.setPrefix("/WEB-INF/views/myview/");
viewResolver.setSuffix(".jsp");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
process(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
process(request, response);
}
private void process(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
String uri = request.getRequestURI();
String path = uri.substring(uri.lastIndexOf("/"));
System.out.println(path);
Controller ctl = handleMapping.getController(path);
String viewName = ctl.handleRequest(request, response);
String forwardUrl = viewResolver.getView(viewName);
request.getRequestDispatcher(forwardUrl).forward(request, response);
}
}
Controller.java
public interface Controller {
String handleRequest(HttpServletRequest request,HttpServletResponse response);
}
MyController.java
public class MyController implements Controller {
@Override
public String handleRequest(HttpServletRequest request, HttpServletResponse response) {
request.setAttribute("merong","Hello Merong" );
return "mypage";
}
}
HandlerMapping.java
public class HandlerMapping {
private Map<String, Controller> mappings;
public HandlerMapping() {
mappings = new HashMap<String, Controller>();
mappings.put("/aaa.do", new MyController());
}
public Controller getController(String path) {
return mappings.get(path);
}
}
ViewResolver.java
public class ViewResolver {
public String prefix;
public String suffix;
public void setPrefix(String prefix) {
this.prefix = prefix;
}
public void setSuffix(String suffix) {
this.suffix = suffix;
}
public String getView(String viewName) {
return prefix + viewName + suffix;
}
}