* 스프링 MVC 패턴
- 스프링 MVC는 컨트롤러 파일에 메서드를 작성
- 보통 String 리턴 타입을 가지는 메서드 사용
- 마지막에 문자열을 리턴할 때 views 파일 경로를 적으면 적혀있는 view 파일과 모델이 url 매핑을 통해 연결
- 매핑을 도와주는 @RequestMapping 어노테이션을 메서드위에 붙힘
- @RequestMapping(value="url", method=RequestMethod.GET or POST) : url 매핑, url 값을 통해 짝을 찾아주는 어노테이션
- 뷰와 모델을 연결하는 방법은 메서드의 파라미터로 Model 내장객체를 집어넣어 연결 (VO하기 전까지는)
- Model 내장객체 : 컨트롤러 내부에 있는 변수나 자료들을 View로 보내주는 역할
Model의 내장 메서드인 model.addAttribute("이름", 자료명)와 같이 사용 -> 모든 자료형를 다 뷰로 보내준다!!
- 스프링은 프로젝트 경로를 이용해서 view 파일에 접근 불가. 무조건!! 컨트롤러의 메서드를 통해서만 접근 가능
- JSP는 하나의 서블릿 클래스에 하나의 경로만 지정 가능, 스프링은 하나의 컨트롤러에 메소드를 통해 여러 개의 경로 지정 가능
- JSP의 request.getParamenter() -> 결과가 조건 String 형식으로 반환됨, 그래서 형변환이 필요하다는 불편함
스프링은 따로 형변환이 필요없다. 알아서 맞춰서 들어가줌
* Controller 작성 - 기본 형식
1. MyappController 작성
- @Controller : 객체를 생성해주는 어노테이션 (컨트롤러 버전 = @Component 랑 똑같은거야 헷갈리지마)
- @RequestMapping : url을 매핑해주는 어노테이션
2. servlet-context.xml에서 <context:component scan>에 의해 객체가 생성되었는지 확인
- root-context.xml은 주로 back-end 역할, 빈 컨테이너 관리, 객체(빈) 생성
- servlet-context.xml은 주로 front-end 역할 -> View 파일 관리, 컴포넌트 스캔
- ViewResolver의 역할도 담겨 있고, 이미 객체가 생성되어있음 (컨트롤러에서 리턴된 문자열을 조합해주는 역할)
3. ViewResolver가 조합한 문자열로 브라우저에 결과물 출력
* Controller 작성 - 주소창 파라미터 전달
- 파라미터 전달이란? 주소창에 http://localhost:8181?getNum=10
(주소창으로 직접 파라미터를 넣어주는 것은 get 방식에서만 유효한 방법)
- @RequestParam("전달받은 파라미터명") 자료형 저장할 변수명
@RequestParam("email") String mail -> <form>의 <input name="email">에서 넘어온 name 값을 넣음
- 이름이 일치한다면 @RequestParam 잘 쓰지 않음
* Controller 작성 - 폼을 이용한 파라미터 전달 예제1
- 섭씨를 입력받아 화씨로 출력해주는 문제
* Controller 작성 - 폼을 이용한 파라미터 전달 예제2
- BMI 지수를 구하는 문제
- 메서드의 반환형을 void로 하면 value값을 주소값으로 하여 자동으로 이동 (단순 페이지 이동 및 출력의 경우 이것이 더 효율적)
* Controller 작성 - ArrayList를 이용한 파라미터 전달 예제3
- 리스트나 배열은 이름대로 적으면 자료가 차곡차곡 들어옴. 같은 이름으로 중복해서 자료를 넘길 수 있으며,
이렇게 받아온 리스트나 배열을 뷰에 넘길 경우는 반복문을 통해 전체 출력 가능
'SPRING' 카테고리의 다른 글
Controller 작성 - VO 객체 (0) | 2020.08.27 |
---|---|
@PathVariable 어노테이션 (0) | 2020.08.26 |
DI 의존성 주입 - xml 파일 분리하기 (0) | 2020.08.24 |
DI 의존성 주입 - xml 파일 <bean> <constructor-arg> (0) | 2020.08.24 |
DI 의존성 주입 - @Qualifier / @Resource (0) | 2020.08.23 |