반응형
컨트롤러 클래스 제작
이전 포스팅에서도 말했지만 최초 클라이언트로 요청이 들어왔을 때, DispatcherServlet이 컨트롤러로 요청을 하게된다.
그리고 컨트롤러는 요청에 따라 작업을 한 후 뷰쪽으로 데이터를 전달한다.
컨트롤러 클래스 제작 순서
1. @Controller를 이용한 클래스 생성
2. @RequstMapping을 이용한 요청 경로 지정
3. 요청 처리 메소드 구현
4. 뷰 이름 리턴
뷰에 데이터 전달
컨트롤러에서 로직 수행 후 뷰페이지를 반환 한다. 이때 뷰에서 사용하게 될 데이터를 객체로 전달 할 수 있다.
1)Model 클래스를 이용한 데이터 전달
HomeController.java
@RequestMapping("/tests")
//Model 객체를 Parameter로 받음.
public String test(Model model){
//Model 객체에 id라는 값에 데이터를 담음.
model.addAttribute("id", 123456);
return "test";
}
test.jsp
// < 컨트롤러에서 전달 받은 Model객체의 속성을 이용한다.
test.jsp 홈페이지 입니다. ${id}
${ } 를 사용하게 되면 Model객체에서 설정한 값을 출력할 수 있음 . 위에서는 설정한 123456으로 출력된다.
2)ModelAndView 클래스를 이용한 데이터 전달
Model에서는 단지 Model객체에 데이터만 담았지만 ModelAndView에서는
데이터와 뷰 이름 설정까지할 수 있고, 반환값으로는 ModelAndView객체를 반환해야한다.
HomeController.java
@RequestMapping("/tests")
public ModelAndView test(){
//ModelAndView 객체 생성.
ModelAndView mv=new ModelAndView();
//Model 객체에 데이터를 담음.
mv.addObject("id", 30);
//뷰 이름 설정
mv.setViewName("home");
return mv;
}
3)@ResponseBody를 사용한 데이터 전달
//@ResponseBody가 없기때문에단순 Mapping 페이지 반환
@RequestMapping("/yeah2")
public String test1(){
return "test";
}
//@ResponseBody사용하지않았기때문에 클라이언트에서 요청시 500에러(타입에러)
//반환 타입이 int라 int형을 반환하고싶다면
//@ResponseBody를 붙여주자
@RequestMapping("/yeah2")
public int test1(){
return 1;
}
//@ResponseBody가 붙었기 때문에 view를 반환하는것이아닌 단순 String객체를 반환한다.
@RequestMapping("/yeah2")
@ResponseBody public String test1(){
return "test";
}
//List 반환
@RequestMapping("/yeah")
@ResponseBody public List<String> test2(){
List<String> a=new ArrayList<String>();
a.add("test");
a.add("test2");
a.add("test3");
return a;
}
//Map<Key,Value>형태기 때문에 클라이언트에서 값 요청시 JSON형태(jackson api덕분에)로 값이넘어간다.
//Map은 key값이 unique하다.
@RequestMapping("/yeah")
@ResponseBody public Map<Object,String> test2(){
Map<Object,String> a=new HashMap<Object,String>();
a.put("id", "test"); a.put("ids", "test2");
a.put("idy", "test3");
return a;
}
//List "<>" type에 객체(VO or DTO)를 넣으면 retrun값이 JSON형태로 넘어간다.
//(@ResponseBody + jacksonapi덕분에)
@RequestMapping("/yeah")
@ResponseBody
public List<MemberVO> test2(){
return mservice.selectMember();
}
반응형
'Framework > Spring Framework' 카테고리의 다른 글
[Spring Framework] Form 데이터(폼 데이터) @ReuqestParam (2) | 2018.07.25 |
---|---|
[Spring Framework] Form 데이터(폼 데이터) HttpServletRequest (0) | 2018.07.25 |
[Spring Framework] MVC 기초(원리와 구조) (0) | 2018.07.25 |
[Spring Framework] 외부파일을 이용한 설정 (0) | 2018.07.25 |
[Spring Framework] 싱글톤(Singleton)의 개념 (0) | 2018.07.25 |
댓글