From fc3a02e07baa702706402d07143a39062d8cd687 Mon Sep 17 00:00:00 2001 From: siyoon Date: Tue, 4 Aug 2020 09:49:21 +0900 Subject: [PATCH 01/10] =?UTF-8?q?View=20=EC=9D=B8=ED=84=B0=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=8A=A4=20=EC=84=A0=EC=96=B8,=20=EC=9D=B4=EB=A5=BC?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84=ED=95=9C=20JsonView,=20JspView=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/core/mvc/view/JsonView.java | 23 ++++++++++++++++ src/main/java/core/mvc/view/JspView.java | 33 +++++++++++++++++++++++ src/main/java/core/mvc/view/View.java | 8 ++++++ 3 files changed, 64 insertions(+) create mode 100644 src/main/java/core/mvc/view/JsonView.java create mode 100644 src/main/java/core/mvc/view/JspView.java create mode 100644 src/main/java/core/mvc/view/View.java diff --git a/src/main/java/core/mvc/view/JsonView.java b/src/main/java/core/mvc/view/JsonView.java new file mode 100644 index 000000000..e484c764c --- /dev/null +++ b/src/main/java/core/mvc/view/JsonView.java @@ -0,0 +1,23 @@ +package core.mvc.view; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; + +public class JsonView implements View { + private final Object object; + + public JsonView(Object object) { + this.object = object; + } + + @Override + public void render(HttpServletRequest req, HttpServletResponse resp) throws Exception { + ObjectMapper mapper = new ObjectMapper(); + resp.setContentType("application/json;charset=UTF-8"); + PrintWriter out = resp.getWriter(); + out.print(mapper.writeValueAsString(object)); + } +} diff --git a/src/main/java/core/mvc/view/JspView.java b/src/main/java/core/mvc/view/JspView.java new file mode 100644 index 000000000..d6f974e1f --- /dev/null +++ b/src/main/java/core/mvc/view/JspView.java @@ -0,0 +1,33 @@ +package core.mvc.view; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class JspView implements View { + private static final String DEFAULT_REDIRECT_PREFIX = "redirect:"; + + private final String url; + + public JspView(String url) { + this.url = url; + } + + @Override + public void render(HttpServletRequest req, HttpServletResponse resp) throws Exception { + move(url, req, resp); + } + + private void move(String viewName, HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + if (viewName.startsWith(DEFAULT_REDIRECT_PREFIX)) { + resp.sendRedirect(viewName.substring(DEFAULT_REDIRECT_PREFIX.length())); + return; + } + + RequestDispatcher rd = req.getRequestDispatcher(viewName); + rd.forward(req, resp); + } +} diff --git a/src/main/java/core/mvc/view/View.java b/src/main/java/core/mvc/view/View.java new file mode 100644 index 000000000..e8f8bcbb8 --- /dev/null +++ b/src/main/java/core/mvc/view/View.java @@ -0,0 +1,8 @@ +package core.mvc.view; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public interface View { + void render(HttpServletRequest req, HttpServletResponse resp) throws Exception; +} From 59420dcea7dccc25072fdaae8f60764199a06518 Mon Sep 17 00:00:00 2001 From: siyoon Date: Wed, 5 Aug 2020 08:32:22 +0900 Subject: [PATCH 02/10] =?UTF-8?q?Controller=20=EB=B0=98=ED=99=98=ED=83=80?= =?UTF-8?q?=EC=9E=85=EC=9D=84=20View=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=ED=95=98=EA=B3=A0,=20=EA=B5=AC=ED=98=84=EC=B2=B4=20JsonView?= =?UTF-8?q?=EC=99=80=20JspView=EB=A5=BC=20=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/core/mvc/Controller.java | 4 +- .../java/next/controller/HomeController.java | 12 +++--- .../controller/qna/AddAnswerController.java | 40 +++++++++++-------- .../qna/DeleteAnswerController.java | 20 ++++------ .../next/controller/qna/ShowController.java | 12 +++--- .../controller/user/CreateUserController.java | 17 ++++---- .../controller/user/ListUserController.java | 14 ++++--- .../next/controller/user/LoginController.java | 18 +++++---- .../controller/user/LogoutController.java | 12 +++--- .../controller/user/ProfileController.java | 12 +++--- .../user/UpdateFormUserController.java | 12 +++--- .../controller/user/UpdateUserController.java | 17 ++++---- 12 files changed, 105 insertions(+), 85 deletions(-) diff --git a/src/main/java/core/mvc/Controller.java b/src/main/java/core/mvc/Controller.java index df7b7f2ea..557832a53 100644 --- a/src/main/java/core/mvc/Controller.java +++ b/src/main/java/core/mvc/Controller.java @@ -1,8 +1,10 @@ package core.mvc; +import core.mvc.view.View; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public interface Controller { - String execute(HttpServletRequest req, HttpServletResponse resp) throws Exception; + View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception; } diff --git a/src/main/java/next/controller/HomeController.java b/src/main/java/next/controller/HomeController.java index d01c085a3..ae4435974 100644 --- a/src/main/java/next/controller/HomeController.java +++ b/src/main/java/next/controller/HomeController.java @@ -1,16 +1,18 @@ package next.controller; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import core.mvc.Controller; +import core.mvc.view.JspView; +import core.mvc.view.View; import next.dao.QuestionDao; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + public class HomeController implements Controller { @Override - public String execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { QuestionDao questionDao = new QuestionDao(); req.setAttribute("questions", questionDao.findAll()); - return "home.jsp"; + return new JspView("home.jsp"); } } diff --git a/src/main/java/next/controller/qna/AddAnswerController.java b/src/main/java/next/controller/qna/AddAnswerController.java index e9c9acd40..f96409797 100644 --- a/src/main/java/next/controller/qna/AddAnswerController.java +++ b/src/main/java/next/controller/qna/AddAnswerController.java @@ -1,34 +1,42 @@ package next.controller.qna; -import java.io.PrintWriter; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fasterxml.jackson.databind.ObjectMapper; - import core.mvc.Controller; +import core.mvc.view.JsonView; +import core.mvc.view.View; import next.dao.AnswerDao; import next.model.Answer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; public class AddAnswerController implements Controller { private static final Logger log = LoggerFactory.getLogger(AddAnswerController.class); @Override - public String execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { Answer answer = new Answer(req.getParameter("writer"), req.getParameter("contents"), Long.parseLong(req.getParameter("questionId"))); log.debug("answer : {}", answer); AnswerDao answerDao = new AnswerDao(); Answer savedAnswer = answerDao.insert(answer); - ObjectMapper mapper = new ObjectMapper(); - resp.setContentType("application/json;charset=UTF-8"); - PrintWriter out = resp.getWriter(); - out.print(mapper.writeValueAsString(savedAnswer)); - return null; + + return new JsonView(savedAnswer); + } + + private Map createModel(HttpServletRequest req) { + final Enumeration names = req.getAttributeNames(); + Map model = new HashMap<>(); + while (names.hasMoreElements()) { + final String name = names.nextElement(); + model.put(name, req.getAttribute(name)); + } + + return model; } } diff --git a/src/main/java/next/controller/qna/DeleteAnswerController.java b/src/main/java/next/controller/qna/DeleteAnswerController.java index 169e3a617..32be3771e 100644 --- a/src/main/java/next/controller/qna/DeleteAnswerController.java +++ b/src/main/java/next/controller/qna/DeleteAnswerController.java @@ -1,28 +1,22 @@ package next.controller.qna; -import java.io.PrintWriter; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import com.fasterxml.jackson.databind.ObjectMapper; - import core.mvc.Controller; +import core.mvc.view.JsonView; +import core.mvc.view.View; import next.dao.AnswerDao; import next.model.Result; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + public class DeleteAnswerController implements Controller { @Override - public String execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { Long answerId = Long.parseLong(req.getParameter("answerId")); AnswerDao answerDao = new AnswerDao(); answerDao.delete(answerId); - ObjectMapper mapper = new ObjectMapper(); - resp.setContentType("application/json;charset=UTF-8"); - PrintWriter out = resp.getWriter(); - out.print(mapper.writeValueAsString(Result.ok())); - return null; + return new JsonView(Result.ok()); } } diff --git a/src/main/java/next/controller/qna/ShowController.java b/src/main/java/next/controller/qna/ShowController.java index bdb26e683..3bda53579 100644 --- a/src/main/java/next/controller/qna/ShowController.java +++ b/src/main/java/next/controller/qna/ShowController.java @@ -1,20 +1,22 @@ package next.controller.qna; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import core.mvc.Controller; +import core.mvc.view.JspView; +import core.mvc.view.View; import next.dao.AnswerDao; import next.dao.QuestionDao; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + public class ShowController implements Controller { @Override - public String execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { Long questionId = Long.parseLong(req.getParameter("questionId")); QuestionDao questionDao = new QuestionDao(); AnswerDao answerDao = new AnswerDao(); req.setAttribute("question", questionDao.findById(questionId)); req.setAttribute("answers", answerDao.findAllByQuestionId(questionId)); - return "/qna/show.jsp"; + return new JspView("/qna/show.jsp"); } } diff --git a/src/main/java/next/controller/user/CreateUserController.java b/src/main/java/next/controller/user/CreateUserController.java index a5db3dc06..377c85a6c 100644 --- a/src/main/java/next/controller/user/CreateUserController.java +++ b/src/main/java/next/controller/user/CreateUserController.java @@ -1,26 +1,27 @@ package next.controller.user; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import core.mvc.Controller; +import core.mvc.view.JspView; +import core.mvc.view.View; import next.dao.UserDao; import next.model.User; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; public class CreateUserController implements Controller { private static final Logger log = LoggerFactory.getLogger(CreateUserController.class); @Override - public String execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { User user = new User(req.getParameter("userId"), req.getParameter("password"), req.getParameter("name"), req.getParameter("email")); log.debug("User : {}", user); UserDao userDao = new UserDao(); userDao.insert(user); - return "redirect:/"; + return new JspView("redirect:/"); } } diff --git a/src/main/java/next/controller/user/ListUserController.java b/src/main/java/next/controller/user/ListUserController.java index 90aec9081..91cab730c 100644 --- a/src/main/java/next/controller/user/ListUserController.java +++ b/src/main/java/next/controller/user/ListUserController.java @@ -1,21 +1,23 @@ package next.controller.user; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import core.mvc.Controller; +import core.mvc.view.JspView; +import core.mvc.view.View; import next.controller.UserSessionUtils; import next.dao.UserDao; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + public class ListUserController implements Controller { @Override - public String execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { if (!UserSessionUtils.isLogined(req.getSession())) { - return "redirect:/users/loginForm"; + return new JspView("redirect:/users/loginForm"); } UserDao userDao = new UserDao(); req.setAttribute("users", userDao.findAll()); - return "/user/list.jsp"; + return new JspView("/user/list.jsp"); } } diff --git a/src/main/java/next/controller/user/LoginController.java b/src/main/java/next/controller/user/LoginController.java index 343e91e6f..88a367aa7 100644 --- a/src/main/java/next/controller/user/LoginController.java +++ b/src/main/java/next/controller/user/LoginController.java @@ -1,32 +1,34 @@ package next.controller.user; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - import core.mvc.Controller; +import core.mvc.view.JspView; +import core.mvc.view.View; import next.controller.UserSessionUtils; import next.dao.UserDao; import next.model.User; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + public class LoginController implements Controller { @Override - public String execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { String userId = req.getParameter("userId"); String password = req.getParameter("password"); UserDao userDao = new UserDao(); User user = userDao.findByUserId(userId); if (user == null) { req.setAttribute("loginFailed", true); - return "/user/login.jsp"; + return new JspView("/user/login.js"); } if (user.matchPassword(password)) { HttpSession session = req.getSession(); session.setAttribute(UserSessionUtils.USER_SESSION_KEY, user); - return "redirect:/"; + return new JspView("redirect:/"); } else { req.setAttribute("loginFailed", true); - return "/user/login.jsp"; + return new JspView("/user/login.jsp"); } } } diff --git a/src/main/java/next/controller/user/LogoutController.java b/src/main/java/next/controller/user/LogoutController.java index 08a8cee33..8e0024236 100644 --- a/src/main/java/next/controller/user/LogoutController.java +++ b/src/main/java/next/controller/user/LogoutController.java @@ -1,17 +1,19 @@ package next.controller.user; +import core.mvc.Controller; +import core.mvc.view.JspView; +import core.mvc.view.View; +import next.controller.UserSessionUtils; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import core.mvc.Controller; -import next.controller.UserSessionUtils; - public class LogoutController implements Controller { @Override - public String execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { HttpSession session = req.getSession(); session.removeAttribute(UserSessionUtils.USER_SESSION_KEY); - return "redirect:/"; + return new JspView("redirect:/"); } } diff --git a/src/main/java/next/controller/user/ProfileController.java b/src/main/java/next/controller/user/ProfileController.java index cf529c3ff..0d1c7c3c3 100644 --- a/src/main/java/next/controller/user/ProfileController.java +++ b/src/main/java/next/controller/user/ProfileController.java @@ -1,15 +1,17 @@ package next.controller.user; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import core.mvc.Controller; +import core.mvc.view.JspView; +import core.mvc.view.View; import next.dao.UserDao; import next.model.User; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + public class ProfileController implements Controller { @Override - public String execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { String userId = req.getParameter("userId"); UserDao userDao = new UserDao(); User user = userDao.findByUserId(userId); @@ -17,6 +19,6 @@ public String execute(HttpServletRequest req, HttpServletResponse resp) throws E throw new NullPointerException("사용자를 찾을 수 없습니다."); } req.setAttribute("user", user); - return "/user/profile.jsp"; + return new JspView("/user/profile.jsp"); } } diff --git a/src/main/java/next/controller/user/UpdateFormUserController.java b/src/main/java/next/controller/user/UpdateFormUserController.java index 3d8650f61..35605830d 100644 --- a/src/main/java/next/controller/user/UpdateFormUserController.java +++ b/src/main/java/next/controller/user/UpdateFormUserController.java @@ -1,17 +1,19 @@ package next.controller.user; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - import core.mvc.Controller; +import core.mvc.view.JspView; +import core.mvc.view.View; import next.controller.UserSessionUtils; import next.dao.UserDao; import next.model.User; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + public class UpdateFormUserController implements Controller { @Override - public String execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { String userId = req.getParameter("userId"); UserDao userDao = new UserDao(); User user = userDao.findByUserId(userId); @@ -19,6 +21,6 @@ public String execute(HttpServletRequest req, HttpServletResponse resp) throws E throw new IllegalStateException("다른 사용자의 정보를 수정할 수 없습니다."); } req.setAttribute("user", user); - return "/user/updateForm.jsp"; + return new JspView("/user/updateForm.jsp"); } } diff --git a/src/main/java/next/controller/user/UpdateUserController.java b/src/main/java/next/controller/user/UpdateUserController.java index 64b1ebbc8..301496325 100644 --- a/src/main/java/next/controller/user/UpdateUserController.java +++ b/src/main/java/next/controller/user/UpdateUserController.java @@ -1,21 +1,22 @@ package next.controller.user; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import core.mvc.Controller; +import core.mvc.view.JspView; +import core.mvc.view.View; import next.controller.UserSessionUtils; import next.dao.UserDao; import next.model.User; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; public class UpdateUserController implements Controller { private static final Logger log = LoggerFactory.getLogger(UpdateUserController.class); @Override - public String execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { UserDao userDao = new UserDao(); User user = userDao.findByUserId(req.getParameter("userId")); if (!UserSessionUtils.isSameUser(req.getSession(), user)) { @@ -26,6 +27,6 @@ public String execute(HttpServletRequest req, HttpServletResponse resp) throws E req.getParameter("email")); log.debug("Update User : {}", updateUser); user.update(updateUser); - return "redirect:/"; + return new JspView("redirect:/"); } } From 37c145cfe5a381d7c7e7f3dd02a457f6c52122a3 Mon Sep 17 00:00:00 2001 From: siyoon Date: Wed, 5 Aug 2020 08:34:28 +0900 Subject: [PATCH 03/10] =?UTF-8?q?Controller=20=EB=B0=98=ED=99=98=ED=83=80?= =?UTF-8?q?=EC=9E=85=EC=9D=84=20View=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= =?UTF-8?q?=ED=95=98=EA=B3=A0,=20=EA=B5=AC=ED=98=84=EC=B2=B4=20JsonView?= =?UTF-8?q?=EC=99=80=20JspView=EB=A5=BC=20=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/core/mvc/ForwardController.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/core/mvc/ForwardController.java b/src/main/java/core/mvc/ForwardController.java index 83c9d89f2..74164c155 100644 --- a/src/main/java/core/mvc/ForwardController.java +++ b/src/main/java/core/mvc/ForwardController.java @@ -1,5 +1,8 @@ package core.mvc; +import core.mvc.view.JspView; +import core.mvc.view.View; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -14,7 +17,7 @@ public ForwardController(String forwardUrl) { } @Override - public String execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { - return forwardUrl; + public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + return new JspView(forwardUrl); } } From 23f526301e2fcc2030d9b0c8b4e5e830068ba56f Mon Sep 17 00:00:00 2001 From: siyoon Date: Wed, 5 Aug 2020 08:39:07 +0900 Subject: [PATCH 04/10] =?UTF-8?q?viewName=20->=20View=20=ED=83=80=EC=9E=85?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD=20OCP=20DIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/core/mvc/DispatcherServlet.java | 30 +++++-------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/src/main/java/core/mvc/DispatcherServlet.java b/src/main/java/core/mvc/DispatcherServlet.java index 59e1a23ee..705d8aa8a 100644 --- a/src/main/java/core/mvc/DispatcherServlet.java +++ b/src/main/java/core/mvc/DispatcherServlet.java @@ -1,56 +1,40 @@ package core.mvc; -import java.io.IOException; +import core.mvc.view.View; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - @WebServlet(name = "dispatcher", urlPatterns = "/", loadOnStartup = 1) public class DispatcherServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final Logger logger = LoggerFactory.getLogger(DispatcherServlet.class); - private static final String DEFAULT_REDIRECT_PREFIX = "redirect:"; private RequestMapping rm; @Override - public void init() throws ServletException { + public void init() { rm = new RequestMapping(); rm.initMapping(); } @Override - protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException { String requestUri = req.getRequestURI(); logger.debug("Method : {}, Request URI : {}", req.getMethod(), requestUri); Controller controller = rm.findController(requestUri); try { - String viewName = controller.execute(req, resp); - if (viewName != null) { - move(viewName, req, resp); - } + View view = controller.execute(req, resp); + view.render(req, resp); } catch (Throwable e) { logger.error("Exception : {}", e); throw new ServletException(e.getMessage()); } } - - private void move(String viewName, HttpServletRequest req, HttpServletResponse resp) - throws ServletException, IOException { - if (viewName.startsWith(DEFAULT_REDIRECT_PREFIX)) { - resp.sendRedirect(viewName.substring(DEFAULT_REDIRECT_PREFIX.length())); - return; - } - - RequestDispatcher rd = req.getRequestDispatcher(viewName); - rd.forward(req, resp); - } } From 9b20350676e8340c894a5f069aeced3bf74aac81 Mon Sep 17 00:00:00 2001 From: siyoon Date: Thu, 6 Aug 2020 09:28:34 +0900 Subject: [PATCH 05/10] =?UTF-8?q?ModelAndView=20=EA=B0=9D=EC=B2=B4=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/core/mvc/modelandview/ModelAndView.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/main/java/core/mvc/modelandview/ModelAndView.java diff --git a/src/main/java/core/mvc/modelandview/ModelAndView.java b/src/main/java/core/mvc/modelandview/ModelAndView.java new file mode 100644 index 000000000..47833c302 --- /dev/null +++ b/src/main/java/core/mvc/modelandview/ModelAndView.java @@ -0,0 +1,15 @@ +package core.mvc.modelandview; + +import core.mvc.view.View; + +import java.util.Map; + +public class ModelAndView { + private final Map model; + private final View view; + + public ModelAndView(Map model, View view) { + this.model = model; + this.view = view; + } +} From 3e9031ce75ec179f6e66408e1596d1d640c41bf4 Mon Sep 17 00:00:00 2001 From: siyoon Date: Thu, 6 Aug 2020 09:49:02 +0900 Subject: [PATCH 06/10] =?UTF-8?q?Controller=EA=B0=80=20ModelAndView?= =?UTF-8?q?=EB=A5=BC=20=EB=B0=98=ED=99=98=ED=95=98=EA=B3=A0=20render?= =?UTF-8?q?=EC=8B=9C=EC=97=90=20ModelAndeView=EA=B0=80=20View=EC=9D=98=20r?= =?UTF-8?q?ender=EB=A5=BC=20=ED=98=B8=EC=B6=9C=ED=95=98=EB=8F=84=EB=A1=9D?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/core/mvc/Controller.java | 4 ++-- src/main/java/core/mvc/DispatcherServlet.java | 6 +++--- src/main/java/core/mvc/modelandview/ModelAndView.java | 6 ++++++ src/main/java/core/mvc/view/JsonView.java | 3 ++- src/main/java/core/mvc/view/JspView.java | 4 +++- src/main/java/core/mvc/view/View.java | 3 ++- 6 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/java/core/mvc/Controller.java b/src/main/java/core/mvc/Controller.java index 557832a53..788045232 100644 --- a/src/main/java/core/mvc/Controller.java +++ b/src/main/java/core/mvc/Controller.java @@ -1,10 +1,10 @@ package core.mvc; -import core.mvc.view.View; +import core.mvc.modelandview.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public interface Controller { - View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception; + ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception; } diff --git a/src/main/java/core/mvc/DispatcherServlet.java b/src/main/java/core/mvc/DispatcherServlet.java index 705d8aa8a..5f2e1944c 100644 --- a/src/main/java/core/mvc/DispatcherServlet.java +++ b/src/main/java/core/mvc/DispatcherServlet.java @@ -1,6 +1,6 @@ package core.mvc; -import core.mvc.view.View; +import core.mvc.modelandview.ModelAndView; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,8 +30,8 @@ protected void service(HttpServletRequest req, HttpServletResponse resp) throws Controller controller = rm.findController(requestUri); try { - View view = controller.execute(req, resp); - view.render(req, resp); + ModelAndView modelAndView = controller.execute(req, resp); + modelAndView.render(req, resp); } catch (Throwable e) { logger.error("Exception : {}", e); throw new ServletException(e.getMessage()); diff --git a/src/main/java/core/mvc/modelandview/ModelAndView.java b/src/main/java/core/mvc/modelandview/ModelAndView.java index 47833c302..196f202cc 100644 --- a/src/main/java/core/mvc/modelandview/ModelAndView.java +++ b/src/main/java/core/mvc/modelandview/ModelAndView.java @@ -2,6 +2,8 @@ import core.mvc.view.View; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.Map; public class ModelAndView { @@ -12,4 +14,8 @@ public ModelAndView(Map model, View view) { this.model = model; this.view = view; } + + public void render(HttpServletRequest req, HttpServletResponse resp) throws Exception { + view.render(req, resp, model); + } } diff --git a/src/main/java/core/mvc/view/JsonView.java b/src/main/java/core/mvc/view/JsonView.java index e484c764c..62d62db2d 100644 --- a/src/main/java/core/mvc/view/JsonView.java +++ b/src/main/java/core/mvc/view/JsonView.java @@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; +import java.util.Map; public class JsonView implements View { private final Object object; @@ -14,7 +15,7 @@ public JsonView(Object object) { } @Override - public void render(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public void render(HttpServletRequest req, HttpServletResponse resp, Map model) throws Exception { ObjectMapper mapper = new ObjectMapper(); resp.setContentType("application/json;charset=UTF-8"); PrintWriter out = resp.getWriter(); diff --git a/src/main/java/core/mvc/view/JspView.java b/src/main/java/core/mvc/view/JspView.java index d6f974e1f..273dc2ade 100644 --- a/src/main/java/core/mvc/view/JspView.java +++ b/src/main/java/core/mvc/view/JspView.java @@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.util.Map; public class JspView implements View { private static final String DEFAULT_REDIRECT_PREFIX = "redirect:"; @@ -16,7 +17,8 @@ public JspView(String url) { } @Override - public void render(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public void render(HttpServletRequest req, HttpServletResponse resp, Map model) throws Exception { + model.forEach(req::setAttribute); move(url, req, resp); } diff --git a/src/main/java/core/mvc/view/View.java b/src/main/java/core/mvc/view/View.java index e8f8bcbb8..c4e85fdeb 100644 --- a/src/main/java/core/mvc/view/View.java +++ b/src/main/java/core/mvc/view/View.java @@ -2,7 +2,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.util.Map; public interface View { - void render(HttpServletRequest req, HttpServletResponse resp) throws Exception; + void render(HttpServletRequest req, HttpServletResponse resp, Map model) throws Exception; } From cb132f1ea58b753a16602a95e1ff4bd20b0d58c3 Mon Sep 17 00:00:00 2001 From: siyoon Date: Thu, 6 Aug 2020 09:58:29 +0900 Subject: [PATCH 07/10] =?UTF-8?q?Controller=20=EA=B5=AC=ED=98=84=EC=B2=B4?= =?UTF-8?q?=20=EB=B0=98=ED=99=98=EA=B0=92=20View=20->=20ModelAndView?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/core/mvc/ForwardController.java | 6 +++--- src/main/java/next/controller/HomeController.java | 6 +++--- .../next/controller/qna/AddAnswerController.java | 6 +++--- .../next/controller/qna/DeleteAnswerController.java | 7 ++++--- .../java/next/controller/qna/ShowController.java | 7 ++++--- .../next/controller/user/CreateUserController.java | 6 +++--- .../next/controller/user/ListUserController.java | 13 ++++++++----- .../java/next/controller/user/LoginController.java | 10 +++++----- .../java/next/controller/user/LogoutController.java | 6 +++--- .../next/controller/user/ProfileController.java | 6 +++--- .../controller/user/UpdateFormUserController.java | 6 +++--- .../next/controller/user/UpdateUserController.java | 6 +++--- 12 files changed, 45 insertions(+), 40 deletions(-) diff --git a/src/main/java/core/mvc/ForwardController.java b/src/main/java/core/mvc/ForwardController.java index 74164c155..0e9d9b3da 100644 --- a/src/main/java/core/mvc/ForwardController.java +++ b/src/main/java/core/mvc/ForwardController.java @@ -1,7 +1,7 @@ package core.mvc; +import core.mvc.modelandview.ModelAndView; import core.mvc.view.JspView; -import core.mvc.view.View; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -17,7 +17,7 @@ public ForwardController(String forwardUrl) { } @Override - public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { - return new JspView(forwardUrl); + public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + return new ModelAndView(null, new JspView(forwardUrl)); } } diff --git a/src/main/java/next/controller/HomeController.java b/src/main/java/next/controller/HomeController.java index ae4435974..d803cc157 100644 --- a/src/main/java/next/controller/HomeController.java +++ b/src/main/java/next/controller/HomeController.java @@ -1,8 +1,8 @@ package next.controller; import core.mvc.Controller; +import core.mvc.modelandview.ModelAndView; import core.mvc.view.JspView; -import core.mvc.view.View; import next.dao.QuestionDao; import javax.servlet.http.HttpServletRequest; @@ -10,9 +10,9 @@ public class HomeController implements Controller { @Override - public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { QuestionDao questionDao = new QuestionDao(); req.setAttribute("questions", questionDao.findAll()); - return new JspView("home.jsp"); + return new ModelAndView(null, new JspView("home.jsp")); } } diff --git a/src/main/java/next/controller/qna/AddAnswerController.java b/src/main/java/next/controller/qna/AddAnswerController.java index f96409797..a7d5a41c7 100644 --- a/src/main/java/next/controller/qna/AddAnswerController.java +++ b/src/main/java/next/controller/qna/AddAnswerController.java @@ -1,8 +1,8 @@ package next.controller.qna; import core.mvc.Controller; +import core.mvc.modelandview.ModelAndView; import core.mvc.view.JsonView; -import core.mvc.view.View; import next.dao.AnswerDao; import next.model.Answer; import org.slf4j.Logger; @@ -18,7 +18,7 @@ public class AddAnswerController implements Controller { private static final Logger log = LoggerFactory.getLogger(AddAnswerController.class); @Override - public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { Answer answer = new Answer(req.getParameter("writer"), req.getParameter("contents"), Long.parseLong(req.getParameter("questionId"))); log.debug("answer : {}", answer); @@ -26,7 +26,7 @@ public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exc AnswerDao answerDao = new AnswerDao(); Answer savedAnswer = answerDao.insert(answer); - return new JsonView(savedAnswer); + return new ModelAndView(null, new JsonView(savedAnswer)); } private Map createModel(HttpServletRequest req) { diff --git a/src/main/java/next/controller/qna/DeleteAnswerController.java b/src/main/java/next/controller/qna/DeleteAnswerController.java index 32be3771e..7d88ebaa6 100644 --- a/src/main/java/next/controller/qna/DeleteAnswerController.java +++ b/src/main/java/next/controller/qna/DeleteAnswerController.java @@ -1,8 +1,8 @@ package next.controller.qna; import core.mvc.Controller; +import core.mvc.modelandview.ModelAndView; import core.mvc.view.JsonView; -import core.mvc.view.View; import next.dao.AnswerDao; import next.model.Result; @@ -11,12 +11,13 @@ public class DeleteAnswerController implements Controller { @Override - public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { Long answerId = Long.parseLong(req.getParameter("answerId")); AnswerDao answerDao = new AnswerDao(); answerDao.delete(answerId); - return new JsonView(Result.ok()); + return new ModelAndView(null, new JsonView(Result.ok())); + } } diff --git a/src/main/java/next/controller/qna/ShowController.java b/src/main/java/next/controller/qna/ShowController.java index 3bda53579..cf7b55615 100644 --- a/src/main/java/next/controller/qna/ShowController.java +++ b/src/main/java/next/controller/qna/ShowController.java @@ -1,8 +1,8 @@ package next.controller.qna; import core.mvc.Controller; +import core.mvc.modelandview.ModelAndView; import core.mvc.view.JspView; -import core.mvc.view.View; import next.dao.AnswerDao; import next.dao.QuestionDao; @@ -11,12 +11,13 @@ public class ShowController implements Controller { @Override - public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { Long questionId = Long.parseLong(req.getParameter("questionId")); QuestionDao questionDao = new QuestionDao(); AnswerDao answerDao = new AnswerDao(); req.setAttribute("question", questionDao.findById(questionId)); req.setAttribute("answers", answerDao.findAllByQuestionId(questionId)); - return new JspView("/qna/show.jsp"); + return new ModelAndView(null, new JspView("/qna/show.jsp")); + } } diff --git a/src/main/java/next/controller/user/CreateUserController.java b/src/main/java/next/controller/user/CreateUserController.java index 377c85a6c..a92694e7f 100644 --- a/src/main/java/next/controller/user/CreateUserController.java +++ b/src/main/java/next/controller/user/CreateUserController.java @@ -1,8 +1,8 @@ package next.controller.user; import core.mvc.Controller; +import core.mvc.modelandview.ModelAndView; import core.mvc.view.JspView; -import core.mvc.view.View; import next.dao.UserDao; import next.model.User; import org.slf4j.Logger; @@ -15,13 +15,13 @@ public class CreateUserController implements Controller { private static final Logger log = LoggerFactory.getLogger(CreateUserController.class); @Override - public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { User user = new User(req.getParameter("userId"), req.getParameter("password"), req.getParameter("name"), req.getParameter("email")); log.debug("User : {}", user); UserDao userDao = new UserDao(); userDao.insert(user); - return new JspView("redirect:/"); + return new ModelAndView(null, new JspView("redirect:/")); } } diff --git a/src/main/java/next/controller/user/ListUserController.java b/src/main/java/next/controller/user/ListUserController.java index 91cab730c..552befa15 100644 --- a/src/main/java/next/controller/user/ListUserController.java +++ b/src/main/java/next/controller/user/ListUserController.java @@ -1,23 +1,26 @@ package next.controller.user; import core.mvc.Controller; +import core.mvc.modelandview.ModelAndView; import core.mvc.view.JspView; -import core.mvc.view.View; import next.controller.UserSessionUtils; import next.dao.UserDao; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; +import java.util.Map; public class ListUserController implements Controller { @Override - public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { if (!UserSessionUtils.isLogined(req.getSession())) { - return new JspView("redirect:/users/loginForm"); + return new ModelAndView(null, new JspView("redirect:/users/loginForm")); } UserDao userDao = new UserDao(); - req.setAttribute("users", userDao.findAll()); - return new JspView("/user/list.jsp"); + Map model = new HashMap<>(); + model.put("users", userDao.findAll()); + return new ModelAndView(model, new JspView("/user/list.jsp")); } } diff --git a/src/main/java/next/controller/user/LoginController.java b/src/main/java/next/controller/user/LoginController.java index 88a367aa7..1e93697b1 100644 --- a/src/main/java/next/controller/user/LoginController.java +++ b/src/main/java/next/controller/user/LoginController.java @@ -1,8 +1,8 @@ package next.controller.user; import core.mvc.Controller; +import core.mvc.modelandview.ModelAndView; import core.mvc.view.JspView; -import core.mvc.view.View; import next.controller.UserSessionUtils; import next.dao.UserDao; import next.model.User; @@ -13,22 +13,22 @@ public class LoginController implements Controller { @Override - public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { String userId = req.getParameter("userId"); String password = req.getParameter("password"); UserDao userDao = new UserDao(); User user = userDao.findByUserId(userId); if (user == null) { req.setAttribute("loginFailed", true); - return new JspView("/user/login.js"); + return new ModelAndView(null, new JspView("/user/login.js")); } if (user.matchPassword(password)) { HttpSession session = req.getSession(); session.setAttribute(UserSessionUtils.USER_SESSION_KEY, user); - return new JspView("redirect:/"); + return new ModelAndView(null, new JspView("redirect:/")); } else { req.setAttribute("loginFailed", true); - return new JspView("/user/login.jsp"); + return new ModelAndView(null, new JspView("/user/login.jsp")); } } } diff --git a/src/main/java/next/controller/user/LogoutController.java b/src/main/java/next/controller/user/LogoutController.java index 8e0024236..8b04647cc 100644 --- a/src/main/java/next/controller/user/LogoutController.java +++ b/src/main/java/next/controller/user/LogoutController.java @@ -1,8 +1,8 @@ package next.controller.user; import core.mvc.Controller; +import core.mvc.modelandview.ModelAndView; import core.mvc.view.JspView; -import core.mvc.view.View; import next.controller.UserSessionUtils; import javax.servlet.http.HttpServletRequest; @@ -11,9 +11,9 @@ public class LogoutController implements Controller { @Override - public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { HttpSession session = req.getSession(); session.removeAttribute(UserSessionUtils.USER_SESSION_KEY); - return new JspView("redirect:/"); + return new ModelAndView(null, new JspView("redirect:/")); } } diff --git a/src/main/java/next/controller/user/ProfileController.java b/src/main/java/next/controller/user/ProfileController.java index 0d1c7c3c3..50666bcdc 100644 --- a/src/main/java/next/controller/user/ProfileController.java +++ b/src/main/java/next/controller/user/ProfileController.java @@ -1,8 +1,8 @@ package next.controller.user; import core.mvc.Controller; +import core.mvc.modelandview.ModelAndView; import core.mvc.view.JspView; -import core.mvc.view.View; import next.dao.UserDao; import next.model.User; @@ -11,7 +11,7 @@ public class ProfileController implements Controller { @Override - public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { String userId = req.getParameter("userId"); UserDao userDao = new UserDao(); User user = userDao.findByUserId(userId); @@ -19,6 +19,6 @@ public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exc throw new NullPointerException("사용자를 찾을 수 없습니다."); } req.setAttribute("user", user); - return new JspView("/user/profile.jsp"); + return new ModelAndView(null, new JspView("/user/profile.jsp")); } } diff --git a/src/main/java/next/controller/user/UpdateFormUserController.java b/src/main/java/next/controller/user/UpdateFormUserController.java index 35605830d..905b75160 100644 --- a/src/main/java/next/controller/user/UpdateFormUserController.java +++ b/src/main/java/next/controller/user/UpdateFormUserController.java @@ -1,8 +1,8 @@ package next.controller.user; import core.mvc.Controller; +import core.mvc.modelandview.ModelAndView; import core.mvc.view.JspView; -import core.mvc.view.View; import next.controller.UserSessionUtils; import next.dao.UserDao; import next.model.User; @@ -13,7 +13,7 @@ public class UpdateFormUserController implements Controller { @Override - public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { String userId = req.getParameter("userId"); UserDao userDao = new UserDao(); User user = userDao.findByUserId(userId); @@ -21,6 +21,6 @@ public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exc throw new IllegalStateException("다른 사용자의 정보를 수정할 수 없습니다."); } req.setAttribute("user", user); - return new JspView("/user/updateForm.jsp"); + return new ModelAndView(null, new JspView("/user/updateForm.jsp")); } } diff --git a/src/main/java/next/controller/user/UpdateUserController.java b/src/main/java/next/controller/user/UpdateUserController.java index 301496325..7073139b2 100644 --- a/src/main/java/next/controller/user/UpdateUserController.java +++ b/src/main/java/next/controller/user/UpdateUserController.java @@ -1,8 +1,8 @@ package next.controller.user; import core.mvc.Controller; +import core.mvc.modelandview.ModelAndView; import core.mvc.view.JspView; -import core.mvc.view.View; import next.controller.UserSessionUtils; import next.dao.UserDao; import next.model.User; @@ -16,7 +16,7 @@ public class UpdateUserController implements Controller { private static final Logger log = LoggerFactory.getLogger(UpdateUserController.class); @Override - public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { + public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { UserDao userDao = new UserDao(); User user = userDao.findByUserId(req.getParameter("userId")); if (!UserSessionUtils.isSameUser(req.getSession(), user)) { @@ -27,6 +27,6 @@ public View execute(HttpServletRequest req, HttpServletResponse resp) throws Exc req.getParameter("email")); log.debug("Update User : {}", updateUser); user.update(updateUser); - return new JspView("redirect:/"); + return new ModelAndView(null, new JspView("redirect:/")); } } From 6f87717a9f5483aea4a1a6177e916e064719b310 Mon Sep 17 00:00:00 2001 From: siyoon Date: Thu, 6 Aug 2020 22:38:25 +0900 Subject: [PATCH 08/10] =?UTF-8?q?ModelAndView=20=EB=82=B4=EB=B6=80?= =?UTF-8?q?=EC=A0=81=EC=9C=BC=EB=A1=9C=20Map=20=EC=84=A0=EC=96=B8=ED=95=98?= =?UTF-8?q?=EA=B3=A0=20=EA=B0=9D=EC=B2=B4=EC=97=90=20=EB=AA=A8=EB=8D=B8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/core/mvc/ForwardController.java | 2 +- .../core/mvc/modelandview/ModelAndView.java | 13 +++++++++-- src/main/java/core/mvc/view/JsonView.java | 22 +++++++++++++------ .../java/next/controller/HomeController.java | 4 ++-- .../controller/qna/AddAnswerController.java | 17 ++------------ .../qna/DeleteAnswerController.java | 3 +-- .../next/controller/qna/ShowController.java | 9 ++++---- .../controller/user/CreateUserController.java | 2 +- .../controller/user/ListUserController.java | 10 ++++----- .../next/controller/user/LoginController.java | 10 ++++----- .../controller/user/LogoutController.java | 2 +- .../controller/user/ProfileController.java | 5 +++-- .../user/UpdateFormUserController.java | 4 ++-- .../controller/user/UpdateUserController.java | 2 +- 14 files changed, 54 insertions(+), 51 deletions(-) diff --git a/src/main/java/core/mvc/ForwardController.java b/src/main/java/core/mvc/ForwardController.java index 0e9d9b3da..9bb88ba57 100644 --- a/src/main/java/core/mvc/ForwardController.java +++ b/src/main/java/core/mvc/ForwardController.java @@ -18,6 +18,6 @@ public ForwardController(String forwardUrl) { @Override public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { - return new ModelAndView(null, new JspView(forwardUrl)); + return new ModelAndView(new JspView(forwardUrl)); } } diff --git a/src/main/java/core/mvc/modelandview/ModelAndView.java b/src/main/java/core/mvc/modelandview/ModelAndView.java index 196f202cc..9449fb108 100644 --- a/src/main/java/core/mvc/modelandview/ModelAndView.java +++ b/src/main/java/core/mvc/modelandview/ModelAndView.java @@ -4,17 +4,26 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; import java.util.Map; public class ModelAndView { private final Map model; private final View view; - public ModelAndView(Map model, View view) { - this.model = model; + public ModelAndView(View view) { + this.model = new HashMap<>(); + if (view == null) { + throw new IllegalArgumentException("View should be not null."); + } this.view = view; } + public ModelAndView addAttribute(String key, Object value) { + model.put(key, value); + return this; + } + public void render(HttpServletRequest req, HttpServletResponse resp) throws Exception { view.render(req, resp, model); } diff --git a/src/main/java/core/mvc/view/JsonView.java b/src/main/java/core/mvc/view/JsonView.java index 62d62db2d..bec135fa8 100644 --- a/src/main/java/core/mvc/view/JsonView.java +++ b/src/main/java/core/mvc/view/JsonView.java @@ -5,20 +5,28 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; +import java.util.Enumeration; import java.util.Map; public class JsonView implements View { - private final Object object; - - public JsonView(Object object) { - this.object = object; - } - @Override public void render(HttpServletRequest req, HttpServletResponse resp, Map model) throws Exception { ObjectMapper mapper = new ObjectMapper(); resp.setContentType("application/json;charset=UTF-8"); PrintWriter out = resp.getWriter(); - out.print(mapper.writeValueAsString(object)); + + for (Map.Entry m : model.entrySet()) { + out.print(mapper.writeValueAsString(m.getValue())); + } + } + + private Map createModel(HttpServletRequest req, Map model) { + final Enumeration names = req.getAttributeNames(); + while (names.hasMoreElements()) { + final String name = names.nextElement(); + model.put(name, req.getAttribute(name)); + } + + return model; } } diff --git a/src/main/java/next/controller/HomeController.java b/src/main/java/next/controller/HomeController.java index d803cc157..d7130bd74 100644 --- a/src/main/java/next/controller/HomeController.java +++ b/src/main/java/next/controller/HomeController.java @@ -12,7 +12,7 @@ public class HomeController implements Controller { @Override public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { QuestionDao questionDao = new QuestionDao(); - req.setAttribute("questions", questionDao.findAll()); - return new ModelAndView(null, new JspView("home.jsp")); + return new ModelAndView(new JspView("home.jsp")) + .addAttribute("questions", questionDao.findAll()); } } diff --git a/src/main/java/next/controller/qna/AddAnswerController.java b/src/main/java/next/controller/qna/AddAnswerController.java index a7d5a41c7..902d74b14 100644 --- a/src/main/java/next/controller/qna/AddAnswerController.java +++ b/src/main/java/next/controller/qna/AddAnswerController.java @@ -10,9 +10,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Map; public class AddAnswerController implements Controller { private static final Logger log = LoggerFactory.getLogger(AddAnswerController.class); @@ -26,17 +23,7 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th AnswerDao answerDao = new AnswerDao(); Answer savedAnswer = answerDao.insert(answer); - return new ModelAndView(null, new JsonView(savedAnswer)); - } - - private Map createModel(HttpServletRequest req) { - final Enumeration names = req.getAttributeNames(); - Map model = new HashMap<>(); - while (names.hasMoreElements()) { - final String name = names.nextElement(); - model.put(name, req.getAttribute(name)); - } - - return model; + return new ModelAndView(new JsonView()) + .addAttribute("savedAnswer", savedAnswer); } } diff --git a/src/main/java/next/controller/qna/DeleteAnswerController.java b/src/main/java/next/controller/qna/DeleteAnswerController.java index 7d88ebaa6..a343484f2 100644 --- a/src/main/java/next/controller/qna/DeleteAnswerController.java +++ b/src/main/java/next/controller/qna/DeleteAnswerController.java @@ -4,7 +4,6 @@ import core.mvc.modelandview.ModelAndView; import core.mvc.view.JsonView; import next.dao.AnswerDao; -import next.model.Result; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -17,7 +16,7 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th answerDao.delete(answerId); - return new ModelAndView(null, new JsonView(Result.ok())); + return new ModelAndView(new JsonView()); } } diff --git a/src/main/java/next/controller/qna/ShowController.java b/src/main/java/next/controller/qna/ShowController.java index cf7b55615..ebe20c9b9 100644 --- a/src/main/java/next/controller/qna/ShowController.java +++ b/src/main/java/next/controller/qna/ShowController.java @@ -12,12 +12,13 @@ public class ShowController implements Controller { @Override public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { - Long questionId = Long.parseLong(req.getParameter("questionId")); + long questionId = Long.parseLong(req.getParameter("questionId")); QuestionDao questionDao = new QuestionDao(); AnswerDao answerDao = new AnswerDao(); - req.setAttribute("question", questionDao.findById(questionId)); - req.setAttribute("answers", answerDao.findAllByQuestionId(questionId)); - return new ModelAndView(null, new JspView("/qna/show.jsp")); + + return new ModelAndView(new JspView("/qna/show.jsp")) + .addAttribute("question", questionDao.findById(questionId)) + .addAttribute("answers", answerDao.findAllByQuestionId(questionId)); } } diff --git a/src/main/java/next/controller/user/CreateUserController.java b/src/main/java/next/controller/user/CreateUserController.java index a92694e7f..bc8e05c97 100644 --- a/src/main/java/next/controller/user/CreateUserController.java +++ b/src/main/java/next/controller/user/CreateUserController.java @@ -22,6 +22,6 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th UserDao userDao = new UserDao(); userDao.insert(user); - return new ModelAndView(null, new JspView("redirect:/")); + return new ModelAndView(new JspView("redirect:/")); } } diff --git a/src/main/java/next/controller/user/ListUserController.java b/src/main/java/next/controller/user/ListUserController.java index 552befa15..04128ad26 100644 --- a/src/main/java/next/controller/user/ListUserController.java +++ b/src/main/java/next/controller/user/ListUserController.java @@ -8,19 +8,17 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.util.HashMap; -import java.util.Map; public class ListUserController implements Controller { @Override public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { if (!UserSessionUtils.isLogined(req.getSession())) { - return new ModelAndView(null, new JspView("redirect:/users/loginForm")); + return new ModelAndView(new JspView("redirect:/users/loginForm")); } UserDao userDao = new UserDao(); - Map model = new HashMap<>(); - model.put("users", userDao.findAll()); - return new ModelAndView(model, new JspView("/user/list.jsp")); + + return new ModelAndView(new JspView("/user/list.jsp")) + .addAttribute("users", userDao.findAll()); } } diff --git a/src/main/java/next/controller/user/LoginController.java b/src/main/java/next/controller/user/LoginController.java index 1e93697b1..77a8e2889 100644 --- a/src/main/java/next/controller/user/LoginController.java +++ b/src/main/java/next/controller/user/LoginController.java @@ -19,16 +19,16 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th UserDao userDao = new UserDao(); User user = userDao.findByUserId(userId); if (user == null) { - req.setAttribute("loginFailed", true); - return new ModelAndView(null, new JspView("/user/login.js")); + return new ModelAndView(new JspView("/user/login.js")) + .addAttribute("loginFailed", true); } if (user.matchPassword(password)) { HttpSession session = req.getSession(); session.setAttribute(UserSessionUtils.USER_SESSION_KEY, user); - return new ModelAndView(null, new JspView("redirect:/")); + return new ModelAndView(new JspView("redirect:/")); } else { - req.setAttribute("loginFailed", true); - return new ModelAndView(null, new JspView("/user/login.jsp")); + return new ModelAndView(new JspView("/user/login.jsp")) + .addAttribute("loginFailed", true); } } } diff --git a/src/main/java/next/controller/user/LogoutController.java b/src/main/java/next/controller/user/LogoutController.java index 8b04647cc..608c44777 100644 --- a/src/main/java/next/controller/user/LogoutController.java +++ b/src/main/java/next/controller/user/LogoutController.java @@ -14,6 +14,6 @@ public class LogoutController implements Controller { public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { HttpSession session = req.getSession(); session.removeAttribute(UserSessionUtils.USER_SESSION_KEY); - return new ModelAndView(null, new JspView("redirect:/")); + return new ModelAndView(new JspView("redirect:/")); } } diff --git a/src/main/java/next/controller/user/ProfileController.java b/src/main/java/next/controller/user/ProfileController.java index 50666bcdc..2af117715 100644 --- a/src/main/java/next/controller/user/ProfileController.java +++ b/src/main/java/next/controller/user/ProfileController.java @@ -18,7 +18,8 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th if (user == null) { throw new NullPointerException("사용자를 찾을 수 없습니다."); } - req.setAttribute("user", user); - return new ModelAndView(null, new JspView("/user/profile.jsp")); + + return new ModelAndView(new JspView("/user/profile.jsp")) + .addAttribute("user", user); } } diff --git a/src/main/java/next/controller/user/UpdateFormUserController.java b/src/main/java/next/controller/user/UpdateFormUserController.java index 905b75160..7577a66ae 100644 --- a/src/main/java/next/controller/user/UpdateFormUserController.java +++ b/src/main/java/next/controller/user/UpdateFormUserController.java @@ -20,7 +20,7 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th if (!UserSessionUtils.isSameUser(req.getSession(), user)) { throw new IllegalStateException("다른 사용자의 정보를 수정할 수 없습니다."); } - req.setAttribute("user", user); - return new ModelAndView(null, new JspView("/user/updateForm.jsp")); + return new ModelAndView(new JspView("/user/updateForm.jsp")) + .addAttribute("user", user); } } diff --git a/src/main/java/next/controller/user/UpdateUserController.java b/src/main/java/next/controller/user/UpdateUserController.java index 7073139b2..0c4c7e3c2 100644 --- a/src/main/java/next/controller/user/UpdateUserController.java +++ b/src/main/java/next/controller/user/UpdateUserController.java @@ -27,6 +27,6 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th req.getParameter("email")); log.debug("Update User : {}", updateUser); user.update(updateUser); - return new ModelAndView(null, new JspView("redirect:/")); + return new ModelAndView(new JspView("redirect:/")); } } From aa48dac49fcd6cad2a510ddb2823cd5f0dc6b3b3 Mon Sep 17 00:00:00 2001 From: siyoon Date: Thu, 6 Aug 2020 22:46:40 +0900 Subject: [PATCH 09/10] =?UTF-8?q?scrpits=20=EC=9D=91=EB=8B=B5=EC=97=90?= =?UTF-8?q?=EC=84=9C=20savedAnswer=EC=9D=84=20=EA=BA=BC=EB=82=B4=EC=93=B0?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/core/mvc/view/JsonView.java | 5 +---- webapp/js/scripts.js | 4 ++-- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/core/mvc/view/JsonView.java b/src/main/java/core/mvc/view/JsonView.java index bec135fa8..ffabb7891 100644 --- a/src/main/java/core/mvc/view/JsonView.java +++ b/src/main/java/core/mvc/view/JsonView.java @@ -14,10 +14,7 @@ public void render(HttpServletRequest req, HttpServletResponse resp, Map m : model.entrySet()) { - out.print(mapper.writeValueAsString(m.getValue())); - } + out.print(mapper.writeValueAsString(model)); } private Map createModel(HttpServletRequest req, Map model) { diff --git a/webapp/js/scripts.js b/webapp/js/scripts.js index 25df2db84..a927751bd 100644 --- a/webapp/js/scripts.js +++ b/webapp/js/scripts.js @@ -16,9 +16,9 @@ function addAnswer(e) { }); } -function onSuccess(json, status){ +function onSuccess(resp, status){ var answerTemplate = $("#answerTemplate").html(); - var template = answerTemplate.format(json.writer, new Date(json.createdDate), json.contents, json.answerId, json.answerId); + var template = answerTemplate.format(resp.savedAnswer.writer, new Date(resp.savedAnswer.createdDate), resp.savedAnswer.contents, resp.savedAnswer.answerId, resp.savedAnswer.answerId); $(".qna-comment-slipp-articles").prepend(template); } From 3707bd1d0e86464f85718f60ee6dd812c181b54d Mon Sep 17 00:00:00 2001 From: siyoon Date: Fri, 7 Aug 2020 09:04:45 +0900 Subject: [PATCH 10/10] =?UTF-8?q?ModelAndView=20builder=20=ED=8C=A8?= =?UTF-8?q?=ED=84=B4=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/core/mvc/ForwardController.java | 4 +- .../core/mvc/modelandview/ModelAndView.java | 42 ++++++++++++++----- .../java/next/controller/HomeController.java | 6 +-- .../controller/qna/AddAnswerController.java | 6 +-- .../qna/DeleteAnswerController.java | 5 +-- .../next/controller/qna/ShowController.java | 7 ++-- .../controller/user/CreateUserController.java | 4 +- .../controller/user/ListUserController.java | 9 ++-- .../next/controller/user/LoginController.java | 14 ++++--- .../controller/user/LogoutController.java | 4 +- .../controller/user/ProfileController.java | 6 +-- .../user/UpdateFormUserController.java | 6 +-- .../controller/user/UpdateUserController.java | 4 +- 13 files changed, 70 insertions(+), 47 deletions(-) diff --git a/src/main/java/core/mvc/ForwardController.java b/src/main/java/core/mvc/ForwardController.java index 9bb88ba57..b1d6dfa5c 100644 --- a/src/main/java/core/mvc/ForwardController.java +++ b/src/main/java/core/mvc/ForwardController.java @@ -1,7 +1,6 @@ package core.mvc; import core.mvc.modelandview.ModelAndView; -import core.mvc.view.JspView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -18,6 +17,7 @@ public ForwardController(String forwardUrl) { @Override public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { - return new ModelAndView(new JspView(forwardUrl)); + return ModelAndView.builder() + .jspView(forwardUrl); } } diff --git a/src/main/java/core/mvc/modelandview/ModelAndView.java b/src/main/java/core/mvc/modelandview/ModelAndView.java index 9449fb108..6c75f9b74 100644 --- a/src/main/java/core/mvc/modelandview/ModelAndView.java +++ b/src/main/java/core/mvc/modelandview/ModelAndView.java @@ -1,5 +1,7 @@ package core.mvc.modelandview; +import core.mvc.view.JsonView; +import core.mvc.view.JspView; import core.mvc.view.View; import javax.servlet.http.HttpServletRequest; @@ -11,20 +13,40 @@ public class ModelAndView { private final Map model; private final View view; - public ModelAndView(View view) { - this.model = new HashMap<>(); - if (view == null) { - throw new IllegalArgumentException("View should be not null."); - } + private ModelAndView(Map model, View view) { + this.model = model; this.view = view; } - public ModelAndView addAttribute(String key, Object value) { - model.put(key, value); - return this; - } - public void render(HttpServletRequest req, HttpServletResponse resp) throws Exception { view.render(req, resp, model); } + + public static ModelAndViewBuilder builder() { + return new ModelAndViewBuilder(); + } + + public static class ModelAndViewBuilder { + private final Map model; + private View view; + + public ModelAndViewBuilder() { + this.model = new HashMap<>(); + } + + public ModelAndViewBuilder addAttribute(String key, Object value) { + model.put(key, value); + return this; + } + + public ModelAndView jspView(String viewName) { + view = new JspView(viewName); + return new ModelAndView(model, view); + } + + public ModelAndView jsonView() { + view = new JsonView(); + return new ModelAndView(model, view); + } + } } diff --git a/src/main/java/next/controller/HomeController.java b/src/main/java/next/controller/HomeController.java index d7130bd74..384a60944 100644 --- a/src/main/java/next/controller/HomeController.java +++ b/src/main/java/next/controller/HomeController.java @@ -2,7 +2,6 @@ import core.mvc.Controller; import core.mvc.modelandview.ModelAndView; -import core.mvc.view.JspView; import next.dao.QuestionDao; import javax.servlet.http.HttpServletRequest; @@ -12,7 +11,8 @@ public class HomeController implements Controller { @Override public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { QuestionDao questionDao = new QuestionDao(); - return new ModelAndView(new JspView("home.jsp")) - .addAttribute("questions", questionDao.findAll()); + return ModelAndView.builder() + .addAttribute("questions", questionDao.findAll()) + .jspView("home.jsp"); } } diff --git a/src/main/java/next/controller/qna/AddAnswerController.java b/src/main/java/next/controller/qna/AddAnswerController.java index 902d74b14..3c86f4347 100644 --- a/src/main/java/next/controller/qna/AddAnswerController.java +++ b/src/main/java/next/controller/qna/AddAnswerController.java @@ -2,7 +2,6 @@ import core.mvc.Controller; import core.mvc.modelandview.ModelAndView; -import core.mvc.view.JsonView; import next.dao.AnswerDao; import next.model.Answer; import org.slf4j.Logger; @@ -23,7 +22,8 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th AnswerDao answerDao = new AnswerDao(); Answer savedAnswer = answerDao.insert(answer); - return new ModelAndView(new JsonView()) - .addAttribute("savedAnswer", savedAnswer); + return ModelAndView.builder() + .addAttribute("savedAnswer", savedAnswer) + .jsonView(); } } diff --git a/src/main/java/next/controller/qna/DeleteAnswerController.java b/src/main/java/next/controller/qna/DeleteAnswerController.java index a343484f2..32a452c72 100644 --- a/src/main/java/next/controller/qna/DeleteAnswerController.java +++ b/src/main/java/next/controller/qna/DeleteAnswerController.java @@ -2,7 +2,6 @@ import core.mvc.Controller; import core.mvc.modelandview.ModelAndView; -import core.mvc.view.JsonView; import next.dao.AnswerDao; import javax.servlet.http.HttpServletRequest; @@ -16,7 +15,7 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th answerDao.delete(answerId); - return new ModelAndView(new JsonView()); - + return ModelAndView.builder() + .jsonView(); } } diff --git a/src/main/java/next/controller/qna/ShowController.java b/src/main/java/next/controller/qna/ShowController.java index ebe20c9b9..e7fab0630 100644 --- a/src/main/java/next/controller/qna/ShowController.java +++ b/src/main/java/next/controller/qna/ShowController.java @@ -2,7 +2,6 @@ import core.mvc.Controller; import core.mvc.modelandview.ModelAndView; -import core.mvc.view.JspView; import next.dao.AnswerDao; import next.dao.QuestionDao; @@ -16,9 +15,9 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th QuestionDao questionDao = new QuestionDao(); AnswerDao answerDao = new AnswerDao(); - return new ModelAndView(new JspView("/qna/show.jsp")) + return ModelAndView.builder() .addAttribute("question", questionDao.findById(questionId)) - .addAttribute("answers", answerDao.findAllByQuestionId(questionId)); - + .addAttribute("answers", answerDao.findAllByQuestionId(questionId)) + .jspView("/qna/show.jsp"); } } diff --git a/src/main/java/next/controller/user/CreateUserController.java b/src/main/java/next/controller/user/CreateUserController.java index bc8e05c97..8d94e79dd 100644 --- a/src/main/java/next/controller/user/CreateUserController.java +++ b/src/main/java/next/controller/user/CreateUserController.java @@ -2,7 +2,6 @@ import core.mvc.Controller; import core.mvc.modelandview.ModelAndView; -import core.mvc.view.JspView; import next.dao.UserDao; import next.model.User; import org.slf4j.Logger; @@ -22,6 +21,7 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th UserDao userDao = new UserDao(); userDao.insert(user); - return new ModelAndView(new JspView("redirect:/")); + return ModelAndView.builder() + .jspView("redirect:/"); } } diff --git a/src/main/java/next/controller/user/ListUserController.java b/src/main/java/next/controller/user/ListUserController.java index 04128ad26..e567473d9 100644 --- a/src/main/java/next/controller/user/ListUserController.java +++ b/src/main/java/next/controller/user/ListUserController.java @@ -2,7 +2,6 @@ import core.mvc.Controller; import core.mvc.modelandview.ModelAndView; -import core.mvc.view.JspView; import next.controller.UserSessionUtils; import next.dao.UserDao; @@ -13,12 +12,14 @@ public class ListUserController implements Controller { @Override public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { if (!UserSessionUtils.isLogined(req.getSession())) { - return new ModelAndView(new JspView("redirect:/users/loginForm")); + return ModelAndView.builder() + .jspView("redirect:/users/loginForm"); } UserDao userDao = new UserDao(); - return new ModelAndView(new JspView("/user/list.jsp")) - .addAttribute("users", userDao.findAll()); + return ModelAndView.builder() + .addAttribute("users", userDao.findAll()) + .jspView("/user/list.jsp"); } } diff --git a/src/main/java/next/controller/user/LoginController.java b/src/main/java/next/controller/user/LoginController.java index 77a8e2889..5eee7632a 100644 --- a/src/main/java/next/controller/user/LoginController.java +++ b/src/main/java/next/controller/user/LoginController.java @@ -2,7 +2,6 @@ import core.mvc.Controller; import core.mvc.modelandview.ModelAndView; -import core.mvc.view.JspView; import next.controller.UserSessionUtils; import next.dao.UserDao; import next.model.User; @@ -19,16 +18,19 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th UserDao userDao = new UserDao(); User user = userDao.findByUserId(userId); if (user == null) { - return new ModelAndView(new JspView("/user/login.js")) - .addAttribute("loginFailed", true); + return ModelAndView.builder() + .addAttribute("loginFailed", true) + .jspView("/user/login.js"); } if (user.matchPassword(password)) { HttpSession session = req.getSession(); session.setAttribute(UserSessionUtils.USER_SESSION_KEY, user); - return new ModelAndView(new JspView("redirect:/")); + return ModelAndView.builder() + .jspView("redirect:/"); } else { - return new ModelAndView(new JspView("/user/login.jsp")) - .addAttribute("loginFailed", true); + return ModelAndView.builder() + .addAttribute("loginFailed", true) + .jspView("/user/login.jsp"); } } } diff --git a/src/main/java/next/controller/user/LogoutController.java b/src/main/java/next/controller/user/LogoutController.java index 608c44777..6648ae2e3 100644 --- a/src/main/java/next/controller/user/LogoutController.java +++ b/src/main/java/next/controller/user/LogoutController.java @@ -2,7 +2,6 @@ import core.mvc.Controller; import core.mvc.modelandview.ModelAndView; -import core.mvc.view.JspView; import next.controller.UserSessionUtils; import javax.servlet.http.HttpServletRequest; @@ -14,6 +13,7 @@ public class LogoutController implements Controller { public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { HttpSession session = req.getSession(); session.removeAttribute(UserSessionUtils.USER_SESSION_KEY); - return new ModelAndView(new JspView("redirect:/")); + return ModelAndView.builder() + .jspView("redirect:/"); } } diff --git a/src/main/java/next/controller/user/ProfileController.java b/src/main/java/next/controller/user/ProfileController.java index 2af117715..44a2470e9 100644 --- a/src/main/java/next/controller/user/ProfileController.java +++ b/src/main/java/next/controller/user/ProfileController.java @@ -2,7 +2,6 @@ import core.mvc.Controller; import core.mvc.modelandview.ModelAndView; -import core.mvc.view.JspView; import next.dao.UserDao; import next.model.User; @@ -19,7 +18,8 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th throw new NullPointerException("사용자를 찾을 수 없습니다."); } - return new ModelAndView(new JspView("/user/profile.jsp")) - .addAttribute("user", user); + return ModelAndView.builder() + .addAttribute("user", user) + .jspView("/user/profile.jsp"); } } diff --git a/src/main/java/next/controller/user/UpdateFormUserController.java b/src/main/java/next/controller/user/UpdateFormUserController.java index 7577a66ae..188ba6377 100644 --- a/src/main/java/next/controller/user/UpdateFormUserController.java +++ b/src/main/java/next/controller/user/UpdateFormUserController.java @@ -2,7 +2,6 @@ import core.mvc.Controller; import core.mvc.modelandview.ModelAndView; -import core.mvc.view.JspView; import next.controller.UserSessionUtils; import next.dao.UserDao; import next.model.User; @@ -20,7 +19,8 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th if (!UserSessionUtils.isSameUser(req.getSession(), user)) { throw new IllegalStateException("다른 사용자의 정보를 수정할 수 없습니다."); } - return new ModelAndView(new JspView("/user/updateForm.jsp")) - .addAttribute("user", user); + return ModelAndView.builder() + .addAttribute("user", user) + .jspView("/user/updateForm.jsp"); } } diff --git a/src/main/java/next/controller/user/UpdateUserController.java b/src/main/java/next/controller/user/UpdateUserController.java index 0c4c7e3c2..3d3910863 100644 --- a/src/main/java/next/controller/user/UpdateUserController.java +++ b/src/main/java/next/controller/user/UpdateUserController.java @@ -2,7 +2,6 @@ import core.mvc.Controller; import core.mvc.modelandview.ModelAndView; -import core.mvc.view.JspView; import next.controller.UserSessionUtils; import next.dao.UserDao; import next.model.User; @@ -27,6 +26,7 @@ public ModelAndView execute(HttpServletRequest req, HttpServletResponse resp) th req.getParameter("email")); log.debug("Update User : {}", updateUser); user.update(updateUser); - return new ModelAndView(new JspView("redirect:/")); + return ModelAndView.builder() + .jspView("redirect:/"); } }