diff --git a/app/src/main/java/com/techcourse/DispatcherServletInitializer.java b/app/src/main/java/com/techcourse/DispatcherServletInitializer.java index 6e814cdd25..b39aa6b68a 100644 --- a/app/src/main/java/com/techcourse/DispatcherServletInitializer.java +++ b/app/src/main/java/com/techcourse/DispatcherServletInitializer.java @@ -4,6 +4,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import web.org.springframework.web.WebApplicationInitializer; +import webmvc.org.springframework.web.servlet.mvc.dispatcher.DispatcherServlet; /** * Base class for {@link WebApplicationInitializer} 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 5d2bdbc30c..0000000000 --- a/app/src/main/java/com/techcourse/ManualHandlerMapping.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.techcourse; - -import com.techcourse.controller.LoginController; -import com.techcourse.controller.LoginViewController; -import com.techcourse.controller.LogoutController; -import com.techcourse.controller.RegisterController; -import com.techcourse.controller.RegisterViewController; -import jakarta.servlet.http.HttpServletRequest; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import webmvc.org.springframework.web.servlet.mvc.asis.Controller; -import webmvc.org.springframework.web.servlet.mvc.asis.ForwardController; -import webmvc.org.springframework.web.servlet.mvc.tobe.HandlerMapping; - -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()); - controllers.put("/register/view", new RegisterViewController()); - controllers.put("/register", new RegisterController()); - - log.info("Initialized Handler Mapping!"); - controllers.keySet() - .forEach(path -> log.info("Path : {}, Controller : {}", path, controllers.get(path).getClass())); - } - - @Override - public Optional getHandler(HttpServletRequest request) { - String requestURI = request.getRequestURI(); - log.debug("Request Mapping Uri : {}", requestURI); - return Optional.ofNullable(controllers.get(requestURI)); - } -} diff --git a/app/src/main/java/com/techcourse/controller/AnnotatedControllerForTest.java b/app/src/main/java/com/techcourse/controller/AnnotatedControllerForTest.java deleted file mode 100644 index 077f6f9b2c..0000000000 --- a/app/src/main/java/com/techcourse/controller/AnnotatedControllerForTest.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.techcourse.controller; - -import static web.org.springframework.web.bind.annotation.RequestMethod.GET; -import static web.org.springframework.web.bind.annotation.RequestMethod.POST; - -import com.techcourse.domain.User; -import com.techcourse.repository.InMemoryUserRepository; -import context.org.springframework.stereotype.Controller; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import web.org.springframework.web.bind.annotation.RequestMapping; -import webmvc.org.springframework.web.servlet.ModelAndView; -import webmvc.org.springframework.web.servlet.view.JspView; - -@Controller -public class AnnotatedControllerForTest { - - private static final Logger log = LoggerFactory.getLogger(AnnotatedControllerForTest.class); - - @RequestMapping(value = "/test", method = GET) - public ModelAndView getLoginPage(HttpServletRequest request, HttpServletResponse response) { - return UserSession.getUserFrom(request.getSession()) - .map(user -> { - log.info("logged in {}", user.getAccount()); - return new ModelAndView(new JspView("redirect:/index.jsp")); - }) - .orElse(new ModelAndView(new JspView("/login.jsp"))); - } - - @RequestMapping(value = "/test", method = POST) - public ModelAndView login(HttpServletRequest request, HttpServletResponse response) { - if (UserSession.isLoggedIn(request.getSession())) { - return new ModelAndView(new JspView("redirect:/index.jsp")); - } - - return InMemoryUserRepository.findByAccount(request.getParameter("account")) - .map(user -> { - log.info("User : {}", user); - return new ModelAndView(new JspView(login(request, user))); - }) - .orElse(new ModelAndView(new JspView("redirect:/401.jsp"))); - } - - private String login(final HttpServletRequest request, final User user) { - if (user.checkPassword(request.getParameter("password"))) { - final var session = request.getSession(); - session.setAttribute(UserSession.SESSION_KEY, user); - return "redirect:/index.jsp"; - } - return "redirect:/401.jsp"; - } -} diff --git a/app/src/main/java/com/techcourse/controller/LoginController.java b/app/src/main/java/com/techcourse/controller/LoginController.java index 0428fe109e..cc83b4c03f 100644 --- a/app/src/main/java/com/techcourse/controller/LoginController.java +++ b/app/src/main/java/com/techcourse/controller/LoginController.java @@ -1,27 +1,42 @@ package com.techcourse.controller; +import static web.org.springframework.web.bind.annotation.RequestMethod.GET; +import static web.org.springframework.web.bind.annotation.RequestMethod.POST; + import com.techcourse.domain.User; import com.techcourse.repository.InMemoryUserRepository; +import context.org.springframework.stereotype.Controller; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import webmvc.org.springframework.web.servlet.mvc.asis.Controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import web.org.springframework.web.bind.annotation.RequestMapping; -public class LoginController implements Controller { +@Controller +public class LoginController { private static final Logger log = LoggerFactory.getLogger(LoginController.class); - @Override - public String execute(final HttpServletRequest req, final HttpServletResponse res) throws Exception { - if (UserSession.isLoggedIn(req.getSession())) { + @RequestMapping(value = "/login", method = GET) + public String getLoginPage(HttpServletRequest request, HttpServletResponse response) { + return UserSession.getUserFrom(request.getSession()) + .map(user -> { + log.info("logged in {}", user.getAccount()); + return "redirect:/index.jsp"; + }) + .orElse("/login.jsp"); + } + + @RequestMapping(value = "/login", method = POST) + public String login(HttpServletRequest request, HttpServletResponse response) { + if (UserSession.isLoggedIn(request.getSession())) { return "redirect:/index.jsp"; } - return InMemoryUserRepository.findByAccount(req.getParameter("account")) + return InMemoryUserRepository.findByAccount(request.getParameter("account")) .map(user -> { log.info("User : {}", user); - return login(req, user); + return login(request, user); }) .orElse("redirect:/401.jsp"); } 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 86ec26cdce..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 webmvc.org.springframework.web.servlet.mvc.asis.Controller; - -public class LoginViewController implements Controller { - - private static final Logger log = LoggerFactory.getLogger(LoginViewController.class); - - @Override - public String execute(final HttpServletRequest req, final 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 4642fd9450..c687b1d450 100644 --- a/app/src/main/java/com/techcourse/controller/LogoutController.java +++ b/app/src/main/java/com/techcourse/controller/LogoutController.java @@ -1,14 +1,18 @@ package com.techcourse.controller; +import static web.org.springframework.web.bind.annotation.RequestMethod.GET; + +import context.org.springframework.stereotype.Controller; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import webmvc.org.springframework.web.servlet.mvc.asis.Controller; +import web.org.springframework.web.bind.annotation.RequestMapping; -public class LogoutController implements Controller { +@Controller +public class LogoutController { - @Override - public String execute(final HttpServletRequest req, final HttpServletResponse res) throws Exception { - final var session = req.getSession(); + @RequestMapping(value = "/logout", method = GET) + public String logout(HttpServletRequest request, HttpServletResponse response) { + final var session = request.getSession(); session.removeAttribute(UserSession.SESSION_KEY); return "redirect:/"; } diff --git a/app/src/main/java/com/techcourse/controller/RegisterController.java b/app/src/main/java/com/techcourse/controller/RegisterController.java index da62e5e8e9..d9add2add9 100644 --- a/app/src/main/java/com/techcourse/controller/RegisterController.java +++ b/app/src/main/java/com/techcourse/controller/RegisterController.java @@ -1,21 +1,30 @@ package com.techcourse.controller; +import static web.org.springframework.web.bind.annotation.RequestMethod.GET; +import static web.org.springframework.web.bind.annotation.RequestMethod.POST; + import com.techcourse.domain.User; import com.techcourse.repository.InMemoryUserRepository; +import context.org.springframework.stereotype.Controller; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import webmvc.org.springframework.web.servlet.mvc.asis.Controller; +import web.org.springframework.web.bind.annotation.RequestMapping; -public class RegisterController implements Controller { +@Controller +public class RegisterController { - @Override - public String execute(final HttpServletRequest req, final HttpServletResponse res) throws Exception { - final var user = new User(2, - req.getParameter("account"), - req.getParameter("password"), - req.getParameter("email")); - InMemoryUserRepository.save(user); + @RequestMapping(value = "/register", method = GET) + public String getRegisterPage(HttpServletRequest request, HttpServletResponse response) { + return "/register.jsp"; + } + @RequestMapping(value = "/register", method = POST) + public String register(HttpServletRequest request, HttpServletResponse response) { + User user = new User(2, + request.getParameter("account"), + request.getParameter("password"), + request.getParameter("email")); + InMemoryUserRepository.save(user); return "redirect:/index.jsp"; } } diff --git a/app/src/main/java/com/techcourse/controller/RegisterViewController.java b/app/src/main/java/com/techcourse/controller/RegisterViewController.java deleted file mode 100644 index 136962136d..0000000000 --- a/app/src/main/java/com/techcourse/controller/RegisterViewController.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.techcourse.controller; - -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import webmvc.org.springframework.web.servlet.mvc.asis.Controller; - -public class RegisterViewController implements Controller { - - @Override - public String execute(final HttpServletRequest req, final HttpServletResponse res) throws Exception { - return "/register.jsp"; - } -} 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" %> - 대시보드 - - -