스프링 347

39. 요청매핑

요청매핑은 말 그대로 요청 왔을 때 어떤 컨트롤러와 매칭해야 하는 지 @Slf4j @RestController public class MappingController { @RequestMapping(value = {"/hello-basic", "hello-go"}, method = RequestMethod.GET) public String helloBasic(HttpServletRequest request){ log.info("basic"); return request.getRequestURI(); } } 저렇게 uri경로 두개로 받을 수 있다. @GetMapping("/mapping/{userId}") public String mappingPath(@PathVariable("userId") String..

38. 로그

이제 Soutv 같은 거 안쓰고 로그 씀 로그는 스프링 부트 하면 보통 기본 라이브러리로 딸려옴. SLF4J가 인터페이스고 Logback이 구현한 건데 우리가 이걸 씀. 종속 라이브러리 중에서 spring-boot-starter-logging에서 확인 가능 @RestController public class LogTestController { private final Logger log = (Logger)LoggerFactory.getLogger(LogTestController.class); @GetMapping("log-test") public String logTest(){ String name = "Spring"; log.info("info log={}", name); return "ok"; } }..

37. 스프링MVC 시작

packaging의 jar와 war의 차이는, jar는 내장톰캣서버를 사용한다. jsp 사용을 못한다. 물론 뭐 찾아보면 방법이 있지 않나 싶지만... war는 jsp사용이 가능하다. 내장 톰캣이 아니다. 물론 내장톰캣이용가능하지만, jar은 내장톰캣에 최적화 되어있다. 이것은 톰캣따로 설치하고, 코드들만 올려서 쓰고 싶을 때 쓴다. 요즘은 거의 jar로 한다. 다 하고 한번 실행하고 http://localhost:8080/ 들어가 본다.

34. 스프링 MVC

@RequestMapping 이거 쓰면 이거 관련 핸들러맵핑(맵핑은 컨트롤러의 종류의 정보를 담고있는 컨트롤러 종류 정보의 집합)이랑 이거관련 핸들러 어댑터 씀. 거의 실무에서는 저거 씀. @Controller public class SpringMemberFormControllerV1 { @RequestMapping("/springmvc/v1/members/new-form") public ModelAndView process(){ System.out.println("SpringMemberFormControllerV1.process"); return new ModelAndView("new-form"); } } @Controller가 뭐냐면, @Component + @RequestMapping이다. 그러면 ..

33. 뷰 리졸버

@Component("/springmvc/old-controller") public class OldController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("OldController.handleRequest"); return new ModelAndView("new-form"); } } 제대로 제기능을 하게 끔 ModelAndView를 반환토록 했다. 이렇게 논리이름을 넣어서 반환하도록 했다. 그렇지만 이렇게 하면 당연히 안된다.. 우리가 실제 물리이름..

32. 핸들러매핑, 핸들러어댑터

@Component("/springmvc/old-controller") public class OldController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("OldController.handleRequest"); return null; } } 과거 버전이다. Controller와 이노테이션인 @Controller와는 다르다. 스프링이 등록해놓은 핸들러매핑과 핸들러어댑터 종류를 몇가지만 소개하겠다. 핸들러 맵핑 RequestMappingHandlerMa..

31. 스프링 MVC 구조

이름만 바뀌고 내가 만들었던 mvc 구조랑 똑같다. 디스패처를 루트로 설정해놔, (urlPatterns="/*") 모든 요청을 저걸통해 받는다. 그 다음, uri(여기선 헤더에 있는 정보등 더 많은 정보를 이용한다)를 조회해 핸들러 mappingMap에 있는 것들 중 있으면 handler를 가져온다. 그 다음, 그 handler로 handlerAdapters를 조회해 어댑터를 가져온다. 그 다음, 그걸로 handle(service)해주면 그것이 ModelAndView를 반환한다. 그걸 viewResolver를 통해 논리 이름을 물리 이름으로 바꿔주고, 그 물리 이름이 포함된 View를 반환해 준다. 이 View.render()로 화면을 그려 response에 넣어 응답해준다. 여기 있는 대부분이 inte..