#22 mvc: RequestMappingHandlerMapping

This commit is contained in:
haerong22
2022-09-24 02:14:30 +09:00
parent 89a253d36e
commit 99f0b69f42
5 changed files with 65 additions and 0 deletions

View File

@@ -28,5 +28,17 @@ public class DispatcherServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
log.info("[DispatcherServlet] service started.");
try {
Controller handler = requestMappingHandlerMapping.findHandler(req.getRequestURI());
String viewName = handler.handleRequest(req, resp);
RequestDispatcher requestDispatcher = req.getRequestDispatcher(viewName);
requestDispatcher.forward(req, resp);
} catch (Exception e) {
log.error("exception occured: [{}]", e.getMessage(), e);
throw new ServletException(e);
}
}
}

View File

@@ -0,0 +1,20 @@
package org.example.mvc;
import org.example.mvc.controller.Controller;
import org.example.mvc.controller.HomeController;
import java.util.HashMap;
import java.util.Map;
public class RequestMappingHandlerMapping {
private Map<String, Controller> mappings = new HashMap<>();
void init() {
mappings.put("/", new HomeController());
}
public Controller findHandler(String uriPath) {
return mappings.get(uriPath);
}
}

View File

@@ -0,0 +1,9 @@
package org.example.mvc.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface Controller {
String handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception;
}

View File

@@ -0,0 +1,11 @@
package org.example.mvc.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HomeController implements Controller{
@Override
public String handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
return "home.jsp";
}
}

View File

@@ -0,0 +1,13 @@
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="kr">
<head>
<meta charset="UTF-8">
<title>home</title>
</head>
<body>
Home 페이지
</body>
</html>