Skip to content

Commit 3b4440e

Browse files
authored
[MVC 구현하기 - 3단계] 여우(조승현) 미션 제출합니다 (#618)
1 parent 80fccfe commit 3b4440e

27 files changed

+291
-248
lines changed

app/src/main/java/com/techcourse/DispatcherServlet.java

Lines changed: 0 additions & 125 deletions
This file was deleted.

app/src/main/java/com/techcourse/DispatcherServletInitializer.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
import org.slf4j.Logger;
55
import org.slf4j.LoggerFactory;
66
import web.org.springframework.web.WebApplicationInitializer;
7+
import webmvc.org.springframework.web.servlet.DispatcherServlet;
8+
import webmvc.org.springframework.web.servlet.HandlerAdapterRegistry;
9+
import webmvc.org.springframework.web.servlet.HandlerMappingRegistry;
10+
import webmvc.org.springframework.web.servlet.mvc.tobe.AnnotationHandlerMapping;
11+
import webmvc.org.springframework.web.servlet.mvc.tobe.HandlerExecutionHandlerAdapter;
712

813
/**
914
* Base class for {@link WebApplicationInitializer}
@@ -17,7 +22,13 @@ public class DispatcherServletInitializer implements WebApplicationInitializer {
1722

1823
@Override
1924
public void onStartup(final ServletContext servletContext) {
20-
final var dispatcherServlet = new DispatcherServlet();
25+
final HandlerMappingRegistry handlerMappingRegistry = new HandlerMappingRegistry();
26+
handlerMappingRegistry.addHandlerMapping(new AnnotationHandlerMapping("com/techcourse"));
27+
28+
final HandlerAdapterRegistry handlerAdapterRegistry = new HandlerAdapterRegistry();
29+
handlerAdapterRegistry.addHandlerAdapter(new HandlerExecutionHandlerAdapter());
30+
31+
final var dispatcherServlet = new DispatcherServlet(handlerAdapterRegistry, handlerMappingRegistry);
2132

2233
final var registration = servletContext.addServlet(DEFAULT_SERVLET_NAME, dispatcherServlet);
2334
if (registration == null) {

app/src/main/java/com/techcourse/ManualHandlerMapping.java

Lines changed: 0 additions & 39 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.techcourse.controller;
2+
3+
import context.org.springframework.stereotype.Controller;
4+
import jakarta.servlet.http.HttpServletRequest;
5+
import jakarta.servlet.http.HttpServletResponse;
6+
import web.org.springframework.web.bind.annotation.RequestMapping;
7+
import web.org.springframework.web.bind.annotation.RequestMethod;
8+
9+
@Controller
10+
public class IndexViewController {
11+
12+
@RequestMapping(value = "/", method = RequestMethod.GET)
13+
public String execute(final HttpServletRequest req, final HttpServletResponse res) throws Exception {
14+
return "/index.jsp";
15+
}
16+
}

app/src/main/java/com/techcourse/controller/LoginController.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,34 @@
22

33
import com.techcourse.domain.User;
44
import com.techcourse.repository.InMemoryUserRepository;
5+
import context.org.springframework.stereotype.Controller;
56
import jakarta.servlet.http.HttpServletRequest;
67
import jakarta.servlet.http.HttpServletResponse;
7-
import webmvc.org.springframework.web.servlet.mvc.asis.Controller;
88
import org.slf4j.Logger;
99
import org.slf4j.LoggerFactory;
10+
import web.org.springframework.web.bind.annotation.RequestMapping;
11+
import web.org.springframework.web.bind.annotation.RequestMethod;
12+
import webmvc.org.springframework.web.servlet.ModelAndView;
13+
import webmvc.org.springframework.web.servlet.view.JspView;
1014

11-
public class LoginController implements Controller {
15+
16+
@Controller
17+
public class LoginController {
1218

1319
private static final Logger log = LoggerFactory.getLogger(LoginController.class);
1420

15-
@Override
16-
public String execute(final HttpServletRequest req, final HttpServletResponse res) throws Exception {
21+
@RequestMapping(value = "/login", method = RequestMethod.POST)
22+
public ModelAndView execute(final HttpServletRequest req, final HttpServletResponse res) throws Exception {
1723
if (UserSession.isLoggedIn(req.getSession())) {
18-
return "redirect:/index.jsp";
24+
return new ModelAndView(new JspView("redirect:/index.jsp"));
1925
}
2026

2127
return InMemoryUserRepository.findByAccount(req.getParameter("account"))
2228
.map(user -> {
2329
log.info("User : {}", user);
24-
return login(req, user);
30+
return new ModelAndView(new JspView(login(req, user)));
2531
})
26-
.orElse("redirect:/401.jsp");
32+
.orElse(new ModelAndView(new JspView("redirect:/401.jsp")));
2733
}
2834

2935
private String login(final HttpServletRequest request, final User user) {

app/src/main/java/com/techcourse/controller/LoginViewController.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
package com.techcourse.controller;
22

3+
import context.org.springframework.stereotype.Controller;
34
import jakarta.servlet.http.HttpServletRequest;
45
import jakarta.servlet.http.HttpServletResponse;
56
import org.slf4j.Logger;
67
import org.slf4j.LoggerFactory;
7-
import webmvc.org.springframework.web.servlet.mvc.asis.Controller;
8+
import web.org.springframework.web.bind.annotation.RequestMapping;
9+
import web.org.springframework.web.bind.annotation.RequestMethod;
810

9-
public class LoginViewController implements Controller {
11+
@Controller
12+
public class LoginViewController {
1013

1114
private static final Logger log = LoggerFactory.getLogger(LoginViewController.class);
1215

13-
@Override
16+
@RequestMapping(value = "/login/view", method = RequestMethod.GET)
1417
public String execute(final HttpServletRequest req, final HttpServletResponse res) throws Exception {
1518
return UserSession.getUserFrom(req.getSession())
1619
.map(user -> {

app/src/main/java/com/techcourse/controller/LogoutController.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.techcourse.controller;
22

3+
import context.org.springframework.stereotype.Controller;
34
import jakarta.servlet.http.HttpServletRequest;
45
import jakarta.servlet.http.HttpServletResponse;
5-
import webmvc.org.springframework.web.servlet.mvc.asis.Controller;
6+
import web.org.springframework.web.bind.annotation.RequestMapping;
7+
import web.org.springframework.web.bind.annotation.RequestMethod;
68

7-
public class LogoutController implements Controller {
9+
@Controller
10+
public class LogoutController {
811

9-
@Override
12+
@RequestMapping(value = "/logout", method = RequestMethod.GET)
1013
public String execute(final HttpServletRequest req, final HttpServletResponse res) throws Exception {
1114
final var session = req.getSession();
1215
session.removeAttribute(UserSession.SESSION_KEY);

app/src/main/java/com/techcourse/controller/RegisterController.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22

33
import com.techcourse.domain.User;
44
import com.techcourse.repository.InMemoryUserRepository;
5+
import context.org.springframework.stereotype.Controller;
56
import jakarta.servlet.http.HttpServletRequest;
67
import jakarta.servlet.http.HttpServletResponse;
7-
import webmvc.org.springframework.web.servlet.mvc.asis.Controller;
8+
import web.org.springframework.web.bind.annotation.RequestMapping;
9+
import web.org.springframework.web.bind.annotation.RequestMethod;
810

9-
public class RegisterController implements Controller {
11+
@Controller
12+
public class RegisterController {
1013

11-
@Override
14+
@RequestMapping(value = "/register", method = RequestMethod.POST)
1215
public String execute(final HttpServletRequest req, final HttpServletResponse res) throws Exception {
1316
final var user = new User(2,
1417
req.getParameter("account"),

app/src/main/java/com/techcourse/controller/RegisterViewController.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package com.techcourse.controller;
22

3+
import context.org.springframework.stereotype.Controller;
34
import jakarta.servlet.http.HttpServletRequest;
45
import jakarta.servlet.http.HttpServletResponse;
5-
import webmvc.org.springframework.web.servlet.mvc.asis.Controller;
6+
import web.org.springframework.web.bind.annotation.RequestMapping;
7+
import web.org.springframework.web.bind.annotation.RequestMethod;
68

7-
public class RegisterViewController implements Controller {
9+
@Controller
10+
public class RegisterViewController {
811

9-
@Override
12+
@RequestMapping(value = "/register/view", method = RequestMethod.GET)
1013
public String execute(final HttpServletRequest req, final HttpServletResponse res) throws Exception {
1114
return "/register.jsp";
1215
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.techcourse.controller;
2+
3+
import com.techcourse.domain.User;
4+
import com.techcourse.repository.InMemoryUserRepository;
5+
import context.org.springframework.stereotype.Controller;
6+
import jakarta.servlet.http.HttpServletRequest;
7+
import jakarta.servlet.http.HttpServletResponse;
8+
import org.slf4j.Logger;
9+
import org.slf4j.LoggerFactory;
10+
import web.org.springframework.web.bind.annotation.RequestMapping;
11+
import web.org.springframework.web.bind.annotation.RequestMethod;
12+
import webmvc.org.springframework.web.servlet.ModelAndView;
13+
import webmvc.org.springframework.web.servlet.view.JsonView;
14+
15+
@Controller
16+
public class UserController {
17+
18+
private static final Logger log = LoggerFactory.getLogger(UserController.class);
19+
20+
@RequestMapping(value = "/api/user", method = RequestMethod.GET)
21+
public ModelAndView show(HttpServletRequest request, HttpServletResponse response) {
22+
final String account = request.getParameter("account");
23+
log.debug("user id : {}", account);
24+
25+
final ModelAndView modelAndView = new ModelAndView(new JsonView());
26+
final User user = InMemoryUserRepository.findByAccount(account)
27+
.orElseThrow();
28+
29+
modelAndView.addObject("user", user);
30+
return modelAndView;
31+
}
32+
}
33+

0 commit comments

Comments
 (0)