Skip to content

Commit de57c58

Browse files
authored
[MVC 구현하기 - 3단계] 도기(김동호) 미션 제출합니다. (#603)
* feat: JspView 구현 * feat: JsonView 구현 * refactor: DispatcherServlet에서 View에게 render를 처리하도록 수행 * remove: 테스트를 위한 클래스 제거 * fix: support에서 잘못된 연산으로 생긴 버그 수정 * refactor: 주입하는 basePackages 수정 * refactor: 로그인 및 회원가입 페이지 요청 URL 수정 * refactor: Legacy MVC 제거 * refactor: 주석 제거 * feat: HandlerExecution에 ViewAdapter를 두어 컨트롤러의 반환값에 상관없이 적절한 View를 반환하도록 구현 * feat: asis 패키지에 있는 ForwardController를 디스패처 서블릿의 DefaultController로 승격, DispatcherServlet의 패키지를 mvc 패키지 아래로 이동 * refactor: AnnotationHandlerMapping의 경로를 좀 더 광범위하게 적용 * refactor: 레거시 MVC 전체 제거 * rename: 기본 위치로 요청이 들어오는 경우 Index 페이지로 응답하도록 하는 성격에 맞도록 네이밍 수정 * rename: 두둠이 공유해주신 문서에 맞도록 패키지 네이밍 변경 * refactor: 예외 종류 변경
1 parent 0811383 commit de57c58

37 files changed

+483
-565
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.slf4j.Logger;
55
import org.slf4j.LoggerFactory;
66
import web.org.springframework.web.WebApplicationInitializer;
7+
import webmvc.org.springframework.web.servlet.mvc.dispatcher.DispatcherServlet;
78

89
/**
910
* Base class for {@link WebApplicationInitializer}

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

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

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

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

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

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,42 @@
11
package com.techcourse.controller;
22

3+
import static web.org.springframework.web.bind.annotation.RequestMethod.GET;
4+
import static web.org.springframework.web.bind.annotation.RequestMethod.POST;
5+
36
import com.techcourse.domain.User;
47
import com.techcourse.repository.InMemoryUserRepository;
8+
import context.org.springframework.stereotype.Controller;
59
import jakarta.servlet.http.HttpServletRequest;
610
import jakarta.servlet.http.HttpServletResponse;
7-
import webmvc.org.springframework.web.servlet.mvc.asis.Controller;
811
import org.slf4j.Logger;
912
import org.slf4j.LoggerFactory;
13+
import web.org.springframework.web.bind.annotation.RequestMapping;
1014

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

1318
private static final Logger log = LoggerFactory.getLogger(LoginController.class);
1419

15-
@Override
16-
public String execute(final HttpServletRequest req, final HttpServletResponse res) throws Exception {
17-
if (UserSession.isLoggedIn(req.getSession())) {
20+
@RequestMapping(value = "/login", method = GET)
21+
public String getLoginPage(HttpServletRequest request, HttpServletResponse response) {
22+
return UserSession.getUserFrom(request.getSession())
23+
.map(user -> {
24+
log.info("logged in {}", user.getAccount());
25+
return "redirect:/index.jsp";
26+
})
27+
.orElse("/login.jsp");
28+
}
29+
30+
@RequestMapping(value = "/login", method = POST)
31+
public String login(HttpServletRequest request, HttpServletResponse response) {
32+
if (UserSession.isLoggedIn(request.getSession())) {
1833
return "redirect:/index.jsp";
1934
}
2035

21-
return InMemoryUserRepository.findByAccount(req.getParameter("account"))
36+
return InMemoryUserRepository.findByAccount(request.getParameter("account"))
2237
.map(user -> {
2338
log.info("User : {}", user);
24-
return login(req, user);
39+
return login(request, user);
2540
})
2641
.orElse("redirect:/401.jsp");
2742
}

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

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

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
package com.techcourse.controller;
22

3+
import static web.org.springframework.web.bind.annotation.RequestMethod.GET;
4+
5+
import context.org.springframework.stereotype.Controller;
36
import jakarta.servlet.http.HttpServletRequest;
47
import jakarta.servlet.http.HttpServletResponse;
5-
import webmvc.org.springframework.web.servlet.mvc.asis.Controller;
8+
import web.org.springframework.web.bind.annotation.RequestMapping;
69

7-
public class LogoutController implements Controller {
10+
@Controller
11+
public class LogoutController {
812

9-
@Override
10-
public String execute(final HttpServletRequest req, final HttpServletResponse res) throws Exception {
11-
final var session = req.getSession();
13+
@RequestMapping(value = "/logout", method = GET)
14+
public String logout(HttpServletRequest request, HttpServletResponse response) {
15+
final var session = request.getSession();
1216
session.removeAttribute(UserSession.SESSION_KEY);
1317
return "redirect:/";
1418
}
Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,30 @@
11
package com.techcourse.controller;
22

3+
import static web.org.springframework.web.bind.annotation.RequestMethod.GET;
4+
import static web.org.springframework.web.bind.annotation.RequestMethod.POST;
5+
36
import com.techcourse.domain.User;
47
import com.techcourse.repository.InMemoryUserRepository;
8+
import context.org.springframework.stereotype.Controller;
59
import jakarta.servlet.http.HttpServletRequest;
610
import jakarta.servlet.http.HttpServletResponse;
7-
import webmvc.org.springframework.web.servlet.mvc.asis.Controller;
11+
import web.org.springframework.web.bind.annotation.RequestMapping;
812

9-
public class RegisterController implements Controller {
13+
@Controller
14+
public class RegisterController {
1015

11-
@Override
12-
public String execute(final HttpServletRequest req, final HttpServletResponse res) throws Exception {
13-
final var user = new User(2,
14-
req.getParameter("account"),
15-
req.getParameter("password"),
16-
req.getParameter("email"));
17-
InMemoryUserRepository.save(user);
16+
@RequestMapping(value = "/register", method = GET)
17+
public String getRegisterPage(HttpServletRequest request, HttpServletResponse response) {
18+
return "/register.jsp";
19+
}
1820

21+
@RequestMapping(value = "/register", method = POST)
22+
public String register(HttpServletRequest request, HttpServletResponse response) {
23+
User user = new User(2,
24+
request.getParameter("account"),
25+
request.getParameter("password"),
26+
request.getParameter("email"));
27+
InMemoryUserRepository.save(user);
1928
return "redirect:/index.jsp";
2029
}
2130
}

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

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

0 commit comments

Comments
 (0)