Property> setter주입을 위해 사용하는 태그입니다.
com.ict.controller.di.classfile / 우클릭 / class / book 생성
빈컨테이너 등록 해준다.
@Component(어노테이션)
root-context.xml - Beans Graph에서 추가되는걸 확인 가능
com.ict.controller.di.classfile / 우클릭 / class / Library 생성
Library가 book에 의존하는 상태로 만들어주세요.
Book의 기능을 Library가 호출하려면, 내부 멤버변수로 Book이 필요
빈컨테이너 등록 @Component
단, 생성자는 void생성자(아무것도 입력받지 않고 아무것도 안 하는) 로 만들어주시고
멤버변수 Book에 대한 setter만 만들어주세요.
@Autowired는 1.멤버변수 위, 2. 생성자 위, 3. setter위에 붙일 수 있습니다.
멤버변수 Book을 이용해 "도서관에서 책을 읽습니다. " 라는 문장을 실행하는 browse 메서드를 생성
com.ict.controller.di - DiMainJavaver
브라우저를 호출
기존 자바에서는 Book, Library를 둘 다 생성해야 실행 가능
아무 동작도 하지 않는 Library의 생성자
멤버변수 book 채우기
com.ict.controller.di - DiMainSpringver
Library를 받아서 browse를 실행해주세요.
실행 하면
도서관에서 책을 읽습니다. 확인할 수 있습니다.
root-context.xml
Library객체를 빈 컨테이너 내부에 생성해보겠습니다.
book1, library1을 먼저 생성해주세요.(bean 태그를 이용)
property 를 이용해서
만들어 준다.
bean 태그 내부에서 사용할 수 있는 태그
1. constructor-arg = 생성자 주입을 위해 사용하는 태그
2. propety = setter주입을 위해 사용하는 태그
먼저 쪼개보겠습니다.
spring / 우클릭 new / Spring Bean Configuration File / root-context2 작성하고 next / beans, context 체크 / finish
context에서 Library객체 복사해서
context2 붙여주기
Beans Graph
쪼갬으로써 장점 - 쾌적함
여기서 문제는 DiMainSpringver library를 실행하면 오류가 난다.
(context에서 context2로 이동했기 때문)
DiMainSpringver 에보면 context에만 연결을 했기때문에 오류가 남
해결 방법
1. 경로 연달아 집어넣기
GenericXmlApplicationContext context =
new GenericXmlApplicationContext("file:src/main/webapp/WEB-INF/spring/root-context.xml",
"file:src/main/webapp/WEB-INF/spring/root-context2.xml" );
스프링 MVC는 컨트롤러 파일에 메서드를 작성합니다.
메서드는 여러 종류를 작성할 수 있지만 우리는 가장 기본적인
String 리턴 타입을 가지는 메서드부터 살펴보겠습니다.
String 리턴 타입 메서드는 마지막에 문자열을 리턴할 때 views 파일 경로를 적게 됩니다.
그러면 적혀있는 view 파일과 모델이 연결됩니다.
HomeController
@RequestMapping(value = "/"
이렇게 되있는데 기본 주소에 http://localhost:8181 + / 이것만 붙이면 사이트가 이동된다.
com.ict.controller / 우클릭 new / class / BasicController 생성
1. @Controller
2.@RequestMapping(value="/ ")
RequestMapping의 value는 localhost:8181/어떤주소 로 접속히 해당 로직이 실행될지 결정합니다.
아무것도 안 적으면 기본적으로 get방식을 허용합합니다.
3.아래에 해당 주소로 접속시 실행하고싶은 메서드를 작성합니다.
4.return "goA"; 라고 적으면 views폴더내부의 goA.jsp파일을 보여줍니다.
ㄴ> 뷰즈 내부에 있는 goA.jsp
views - 우클릭 - jsp파일 - goA 생성
실행하면
goB로 접속했을때 b.jsp 창이 열리도록 아래에 세팅해주세요.
views - 우클릭 - jsp파일 - b 생성
문제)
성함 성씨 기준(강사 기준 : "/chae")으로 패턴을 잡고
결과 페이지는 "XXX의 페이지 입니다."라는 문장이 뜨도록 처리
views - 우클릭 - jsp파일 - won 생성
외부에서 전송하는 데이터는 메서드 선언부에 선언된 변수로 받습니다.
이름만 일치하면 알아서 받아옵니다.
자료형은 신경쓸 필요가 없습니다.
@RequestMapping(value="/getData") // 주소
/getDate?data1=데이터1&data2=데이터2에 해당하는 요소를 받아옵니다.
/getData?data1=벨로그&data2=31 작성하고 실행하면
ㄴ> jsp를 아직 안만들어서 404 나는것
문제)
외부에서 전송하는 데이터를 /getMoney 주소로 받아오겠습니다.
이 주소는 int won 이라는 형식으로 금액을 받아서
환율에 따른 환전금액을 콘솔에 찍어줍니다.
결과페이지는 exchange.jsp로 하겠습니다.
메서드명은 임의로 만들어주세요.
@RequestMapping(value="/getMoney") // 주소
메서드 이름
/getMoney?won=20000 작성 하고 실행하면
ㄴ> jsp를 안만들어서 오류