본문 바로가기

SPRING

Controller 작성 - 일반 자료형 / 폼 / ArrayList

* 스프링 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

- 리스트나 배열은 이름대로 적으면 자료가 차곡차곡 들어옴. 같은 이름으로 중복해서 자료를 넘길 수 있으며,

  이렇게 받아온 리스트나 배열을 뷰에 넘길 경우는 반복문을 통해 전체 출력 가능