먼저 전체적인 흐름에 대해 알아보자면 1. 브라우저(사용자)에서 서버로 .do를 요청한다. 2. .do 요청을 받았으니 DispatcherServlet 서블릿을 생성하고 멤버변수로 DI를 필요로 한다. --> DispatcherServlet-servlet.xml 을 참고하여 DI 해줌 --> 스프링 컨테이너가 구동됨 (여기서 스프링 컨테이너가 구동되는 객체를 '프레젠테이션 레이어'라고 한다) 3. .do 요청에 맞는 Controller 객체를 호출하여 사용한다. --> Controller만 사용하는 것이 아니라 Controller, DAO, VO, Model, ... 등을 사용함 --> 이것들을 Command 객체라고 함 * 이것들을 사용하기 위해서는 '비즈니스 레이어'를 끼워야 한다. --> 이유 : ..
Spring
Command 객체는 별도의 설정 없이 바로 VIEW에서 EL 표현식으로 사용가능하다. (단, 클래스 타입을 소문자로 시작해야함) 일반적으로는 값을 VIEW에 넘기려하면, MAV를 사용하여 넘겨준다. 현재는 VIEW가 VO를 알고있는 상황으로 설정되어 있지만 보통은 VIEW에서는 VO 개념을 모르기 때문에 "@ModelAttribute()" 로 객체를 VIEW에 넘겨줘야한다. 또한, 현재 Controller 객체의 메소드 OUTPUT은 Stirng 혹은 ModelAndView로 설정되어 있는데, ModelAndView를 Model 형태로 변경하고, 반환값은 보다 가벼운 String으로 통일할 예정이다. @ModelAttribute() 사용 이유 View에서 사용할 데이터를 세팅하려는 목적으로 활용하는 어..
@Repository MVC 패턴 Model 파트에서 사용 (DAO 구나라고 알 수 있음) @Service Controller 파트에서 사용 (Service 레이어에서 활용됨) @Controller Controller 파트에서 사용 implements Controller 대신 사용 @Override 삭제 가능 @Controller 를 사용하므로써 메소드의 강제성이 사라졌다. 따라서 메소드 시그니처가 고정되어 있지 않다는 말이 된다. 그러므로 특정 요청에 대해 Controller 객체를 찾아가는 것이 아니라 메소드를 찾아가는 것이 된다. 또한, 비슷한 로직끼리의 메소드를 묶을 수 있지만 응집도가 높아지는 단점이 있다. LoginController.java @Controller public class Log..
오늘은 web.xml에서 내가 만든 클래스를 스프링이 제공하는 클래스로 변경하는 법에 대해 알아보려고 한다. org.springframework.web.servlet.DispatcherServlet * 스프링을 사용할 때 필요한 하는 명령어 WebApplicationContext 추상 클래스인 AbstractApplicationContext 하위에 WebApplicationContext가 존재한다. '○○○○ApplicationContext' 는 컨테이너를 구동하겠다는 뜻을 말한다. 컨테이너를 구동하기 위해서는 .xml 파일이 필요하다. 현재는 웹에서의 컨테이너가 필요하기 때문에 WebApplicationContext가 필요하다. 이는 WEB-INF 하위에서 생성하고 Spring Bean Configur..