diff --git a/app/src/main/java/com/techcourse/DispatcherServletInitializer.java b/app/src/main/java/com/techcourse/DispatcherServletInitializer.java index 9c97239440..d78ded3042 100644 --- a/app/src/main/java/com/techcourse/DispatcherServletInitializer.java +++ b/app/src/main/java/com/techcourse/DispatcherServletInitializer.java @@ -1,6 +1,7 @@ package com.techcourse; import com.interface21.web.WebApplicationInitializer; +import com.interface21.webmvc.servlet.DispatcherServlet; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletRegistration.Dynamic; import org.slf4j.Logger; diff --git a/app/src/main/java/com/techcourse/HandlerAdaptersInitializer.java b/app/src/main/java/com/techcourse/HandlerAdaptersInitializer.java index 94a5f96889..d3fa4b2b2a 100644 --- a/app/src/main/java/com/techcourse/HandlerAdaptersInitializer.java +++ b/app/src/main/java/com/techcourse/HandlerAdaptersInitializer.java @@ -1,8 +1,7 @@ package com.techcourse; -import com.interface21.webmvc.servlet.mvc.tobe.AnnotationHandlerAdapter; -import com.interface21.webmvc.servlet.mvc.tobe.HandlerAdapters; -import com.interface21.webmvc.servlet.mvc.tobe.ManualHandlerAdapter; +import com.interface21.webmvc.servlet.mvc.tobe.adapter.AnnotationHandlerAdapter; +import com.interface21.webmvc.servlet.mvc.tobe.adapter.HandlerAdapters; public class HandlerAdaptersInitializer { @@ -11,7 +10,6 @@ public HandlerAdaptersInitializer() { public HandlerAdapters initialize() { HandlerAdapters handlerAdapters = new HandlerAdapters(); - handlerAdapters.addHandlerAdapter(new ManualHandlerAdapter()); handlerAdapters.addHandlerAdapter(new AnnotationHandlerAdapter()); return handlerAdapters; } diff --git a/app/src/main/java/com/techcourse/HandlerMappingsInitializer.java b/app/src/main/java/com/techcourse/HandlerMappingsInitializer.java index 04b39bd457..15d9fd5f9c 100644 --- a/app/src/main/java/com/techcourse/HandlerMappingsInitializer.java +++ b/app/src/main/java/com/techcourse/HandlerMappingsInitializer.java @@ -1,7 +1,7 @@ package com.techcourse; -import com.interface21.webmvc.servlet.mvc.tobe.AnnotationHandlerMapping; -import com.interface21.webmvc.servlet.mvc.tobe.HandlerMappings; +import com.interface21.webmvc.servlet.mvc.tobe.mapping.AnnotationHandlerMapping; +import com.interface21.webmvc.servlet.mvc.tobe.mapping.HandlerMappings; public class HandlerMappingsInitializer { @@ -10,7 +10,6 @@ public HandlerMappingsInitializer() { public HandlerMappings initialize() { HandlerMappings handlerMappings = new HandlerMappings(); - handlerMappings.addHandlerMapping(new ManualHandlerMapping()); handlerMappings.addHandlerMapping(new AnnotationHandlerMapping("com.techcourse.controller")); handlerMappings.initialize(); return handlerMappings; diff --git a/app/src/main/java/com/techcourse/ManualHandlerMapping.java b/app/src/main/java/com/techcourse/ManualHandlerMapping.java deleted file mode 100644 index ee9645ed58..0000000000 --- a/app/src/main/java/com/techcourse/ManualHandlerMapping.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.techcourse; - -import com.interface21.webmvc.servlet.mvc.tobe.HandlerMapping; -import com.techcourse.controller.*; -import jakarta.servlet.http.HttpServletRequest; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import com.interface21.webmvc.servlet.mvc.asis.Controller; -import com.interface21.webmvc.servlet.mvc.asis.ForwardController; - -import java.util.HashMap; -import java.util.Map; - -public class ManualHandlerMapping implements HandlerMapping { - - private static final Logger log = LoggerFactory.getLogger(ManualHandlerMapping.class); - - private static final Map controllers = new HashMap<>(); - - public void initialize() { - controllers.put("/", new ForwardController("/index.jsp")); - controllers.put("/login", new LoginController()); - controllers.put("/login/view", new LoginViewController()); - controllers.put("/logout", new LogoutController()); - - log.info("Initialized Handler Mapping!"); - controllers.keySet() - .forEach(path -> log.info("Path : {}, Controller : {}", path, controllers.get(path).getClass())); - } - - @Override - public Object findHandler(HttpServletRequest request) { - String requestURI = request.getRequestURI(); - log.debug("Request Mapping Uri : {}", requestURI); - return controllers.get(requestURI); - } -} diff --git a/app/src/main/java/com/techcourse/controller/ForwardController.java b/app/src/main/java/com/techcourse/controller/ForwardController.java new file mode 100644 index 0000000000..7c5c093754 --- /dev/null +++ b/app/src/main/java/com/techcourse/controller/ForwardController.java @@ -0,0 +1,18 @@ +package com.techcourse.controller; + +import com.interface21.context.stereotype.Controller; +import com.interface21.web.bind.annotation.RequestMapping; +import com.interface21.web.bind.annotation.RequestMethod; +import com.interface21.webmvc.servlet.ModelAndView; +import com.interface21.webmvc.servlet.view.JspView; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +@Controller +public class ForwardController { + + @RequestMapping(value = "/", method = RequestMethod.GET) + public ModelAndView forward(HttpServletRequest request, HttpServletResponse response) { + return new ModelAndView(new JspView("/index.jsp")); + } +} diff --git a/app/src/main/java/com/techcourse/controller/LoginController.java b/app/src/main/java/com/techcourse/controller/LoginController.java index 3a9cec2c63..090b7fde79 100644 --- a/app/src/main/java/com/techcourse/controller/LoginController.java +++ b/app/src/main/java/com/techcourse/controller/LoginController.java @@ -1,33 +1,60 @@ package com.techcourse.controller; +import com.interface21.context.stereotype.Controller; +import com.interface21.web.bind.annotation.RequestMapping; +import com.interface21.web.bind.annotation.RequestMethod; +import com.interface21.webmvc.servlet.ModelAndView; +import com.interface21.webmvc.servlet.view.JspView; import com.techcourse.domain.User; import com.techcourse.repository.InMemoryUserRepository; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import com.interface21.webmvc.servlet.mvc.asis.Controller; import jakarta.servlet.http.HttpSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class LoginController implements Controller { +@Controller +public class LoginController { private static final Logger log = LoggerFactory.getLogger(LoginController.class); - @Override - public String execute(HttpServletRequest req, HttpServletResponse res) throws Exception { - if (UserSession.isLoggedIn(req.getSession())) { - return "redirect:/index.jsp"; + @RequestMapping(value = "/login", method = RequestMethod.GET) + public ModelAndView loginView(HttpServletRequest request, HttpServletResponse response) { + String loginView = resolveLoginView(request); + + return new ModelAndView(new JspView(loginView)); + } + + private static String resolveLoginView(HttpServletRequest request) { + return UserSession.getUserFrom(request.getSession()) + .map(user -> { + log.info("logged in {}", user.getAccount()); + return "redirect:/index.jsp"; + }) + .orElse("/login.jsp"); + } + + @RequestMapping(value = "/login", method = RequestMethod.POST) + public ModelAndView login(HttpServletRequest request, HttpServletResponse response) { + if (UserSession.isLoggedIn(request.getSession())) { + new ModelAndView(new JspView("redirect:/index.jsp")); } - return InMemoryUserRepository.findByAccount(req.getParameter("account")) + String account = attemptLogin(request); + + return new ModelAndView(new JspView(account)); + } + + private String attemptLogin(HttpServletRequest request) { + return InMemoryUserRepository.findByAccount(request.getParameter("account")) .map(user -> { log.info("User : {}", user); - return login(req, user); + return performLogin(request, user); }) .orElse("redirect:/401.jsp"); } - private String login(HttpServletRequest request, User user) { + private String performLogin(HttpServletRequest request, User user) { if (user.checkPassword(request.getParameter("password"))) { HttpSession session = request.getSession(); session.setAttribute(UserSession.SESSION_KEY, user); diff --git a/app/src/main/java/com/techcourse/controller/LoginViewController.java b/app/src/main/java/com/techcourse/controller/LoginViewController.java deleted file mode 100644 index 841c4d7ba1..0000000000 --- a/app/src/main/java/com/techcourse/controller/LoginViewController.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.techcourse.controller; - -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import com.interface21.webmvc.servlet.mvc.asis.Controller; - -public class LoginViewController implements Controller { - - private static final Logger log = LoggerFactory.getLogger(LoginViewController.class); - - @Override - public String execute(HttpServletRequest req, HttpServletResponse res) throws Exception { - return UserSession.getUserFrom(req.getSession()) - .map(user -> { - log.info("logged in {}", user.getAccount()); - return "redirect:/index.jsp"; - }) - .orElse("/login.jsp"); - } -} diff --git a/app/src/main/java/com/techcourse/controller/LogoutController.java b/app/src/main/java/com/techcourse/controller/LogoutController.java index c6bd831ea9..b68ee3cf60 100644 --- a/app/src/main/java/com/techcourse/controller/LogoutController.java +++ b/app/src/main/java/com/techcourse/controller/LogoutController.java @@ -1,16 +1,21 @@ package com.techcourse.controller; +import com.interface21.context.stereotype.Controller; +import com.interface21.web.bind.annotation.RequestMapping; +import com.interface21.web.bind.annotation.RequestMethod; +import com.interface21.webmvc.servlet.ModelAndView; +import com.interface21.webmvc.servlet.view.JspView; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import com.interface21.webmvc.servlet.mvc.asis.Controller; import jakarta.servlet.http.HttpSession; -public class LogoutController implements Controller { +@Controller +public class LogoutController { - @Override - public String execute(HttpServletRequest req, HttpServletResponse res) throws Exception { - HttpSession session = req.getSession(); + @RequestMapping(value = "/logout", method = RequestMethod.GET) + public ModelAndView loginView(HttpServletRequest request, HttpServletResponse response) { + HttpSession session = request.getSession(); session.removeAttribute(UserSession.SESSION_KEY); - return "redirect:/"; + return new ModelAndView(new JspView("redirect:/")); } } diff --git a/app/src/main/java/com/techcourse/controller/UserController.java b/app/src/main/java/com/techcourse/controller/UserController.java new file mode 100644 index 0000000000..cd1bc3d338 --- /dev/null +++ b/app/src/main/java/com/techcourse/controller/UserController.java @@ -0,0 +1,32 @@ +package com.techcourse.controller; + +import com.interface21.context.stereotype.Controller; +import com.interface21.web.bind.annotation.RequestMapping; +import com.interface21.web.bind.annotation.RequestMethod; +import com.interface21.webmvc.servlet.ModelAndView; +import com.interface21.webmvc.servlet.view.JsonView; +import com.techcourse.domain.User; +import com.techcourse.repository.InMemoryUserRepository; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Controller +public class UserController { + + private static final Logger log = LoggerFactory.getLogger(UserController.class); + + @RequestMapping(value = "/api/user", method = RequestMethod.GET) + public ModelAndView show(HttpServletRequest request, HttpServletResponse response) { + final String account = request.getParameter("account"); + log.debug("user id : {}", account); + + final ModelAndView modelAndView = new ModelAndView(new JsonView()); + final User user = InMemoryUserRepository.findByAccount(account) + .orElseThrow(); + + modelAndView.addObject("user", user); + return modelAndView; + } +} diff --git a/app/src/main/webapp/index.html b/app/src/main/webapp/index.html index 95df361069..207ce8e3a6 100644 --- a/app/src/main/webapp/index.html +++ b/app/src/main/webapp/index.html @@ -1,105 +1,112 @@ - - - - - - - 대시보드 - - - - - +
+
+ +
+
+
+
+

대시보드

+ +
+
+
+
+ + Bar Chart
-
-
-
- - Pie Chart -
-
-
+
+
-
- +
+
+ + + + + + + + + + diff --git a/app/src/main/webapp/index.jsp b/app/src/main/webapp/index.jsp index 142ee3d104..7d53adfbb2 100644 --- a/app/src/main/webapp/index.jsp +++ b/app/src/main/webapp/index.jsp @@ -1,97 +1,105 @@ <%@ page contentType="text/html;charset=UTF-8" %> - - <%@ include file="include/header.jspf" %> - 대시보드 - - -