IT 공부/KH 정보교육원
Spring MVC를 이용한 구현
Zinisang
2021. 6. 23. 22:20
1. XML 문서를 이용한 설정 방법
- Controller가 수시로 변경되어야 하는 경우(주로 솔루션 개발하는 업체에서 사용)
- 설정 방법
- Spring Bean Configuration 설정 파일(~~.xml) 내부에 HandlerMapping / 각 Controller / ViewResolver 클래스에 대한 등록 필요
- <bean id="" class=""></bean> 과 같은 형식으로 등록
- 등록순서:
- 일반적으로 HandlerMapping / 각 Controller / ViewResolver 순으로 등록...
2. annotation을 이용한 설정 방법
- Controller 가 고정되어서 사용되는 경우(특정 기업에 대한 어플리케이션 개발 시)
- 설정 방법
- 각 Controller 클래스 선언부 위에 @Controller를 추가(단, POJO 형식의 클래스)
- Controller 클래스 내부에서 로직을 처리하는 메서드 선언부 위에는
- @RequestMapping(value="요청사항") 을 추가
- 해당 메서드의 매개변수는 각 메서드가 해야하는 일에 따라 VO 객체 타입만 선언할 수도 있고,
- VO와 DAO 타입을 모두 선언할 수도 있다.
위의 @Controller 와 @RequestMapping 는 필수!! 나머지는 다 선택사항
@RequestMapping
- 반환되는 타입은 String 타입..
- 이 때, return 되는 값에 따라 "redirect:" 라는 접두사를 추가할 수도 있다..
- 웹 브라우저가 재요청이 필요한 경우에는 "redirect:" 접두사를 포함하여 리턴.
- 단순히 화면이 필요한 경우에는 해당 결과만...
- 개발자가 직접 객체명을 지정할 경우
@RequestMapping(value="요청사항", method="요청방식")
public String test(UserVO vo){
~~~
}
@RequestMapping(value="요청사항", method="요청방식")
public String test(@ModelAttribute("객체명") UserVO vo){
~~~
}
@ModelAttribute("객체명")와 같이 설정하여 사용 가능!!
- 컨트롤러 내부의 메서드들에 대한 반환 타입을 통일할 경우
1. 모든 메서드의 반환타입을 ModelAndView 로 통일
JSP에서 사용할 데이터가 없이 화면만 응답할 경우
public ModelAndView test(~~~, ModelAndView mav){
mav.setViewName("화면처리");
return mav;
}
JSP에서 사용할 데이터를 포함하여 화면까지 응답할 경우
public ModelAndView test(~~~, ModelAndView mav){
mav.addObject("이름", 전달할 데이터(객체));
mav.setViewName("화면처리");
return mav;
}
2. 모든 메서드의 반환타입을 String 로 통일
JSP에서 사용할 데이터가 없이 화면만 응답할 경우
public String test(~~~){
return "화면처리";
}
JSP에서 사용할 데이터를 포함하여 화면까지 응답할 경우
public String test(~~~, Model model){
model.addAttribute("이름", 전달할 데이터(객체));
return "화면처리";
}
@RequestParam
BoarVO / UserVO 에 선언되지 않은 값이 전달 될 경우 (입력값 등의 경우)
- BoardVO 클래스를 수정. 입력하고자 한값의 name 대로 변수를 추가한 후, 그에따른 getter/setter를 추가하는 방법
- @RequestParam 어노테이션을 사용하는 방법
기본형태
public String getBoardList(BoardVO vo, BoardDAO dao, Model model){
~~~
}
기본 value 값만 추가
public String getBoardList
(@RequestParam(value="입력값의 name") String name,
@RequestParam(value="다른입력값의 name") String name,
BoardVO vo, BoardDAO dao, Model model){
~~~
}
파라비터에 대한 기본값을 설정
public String getBoardList
(@RequestParam(value="입력값의 name", defaultValue="222") String name,
@RequestParam(value="다른입력값의 name", defaultValue="222") String name,
BoardVO vo, BoardDAO dao, Model model){
~~~
}
파라미터에 대한 필수 입력 확인
public String getBoardList
(@RequestParam(value="입력값의 name", defaultValue="222", required="true/false") String name,
@RequestParam(value="다른입력값의 name", defaultValue="222", required="true/false") String name,
BoardVO vo, BoardDAO dao, Model model){
~~~
}
3. XML 과 annotation을 혼용해서 사용 (향후 추가될 여지가 있을 경우)