요청 메서드의 반환 자료형
@Controller 어노테이션을 사용하여 작성된 컨트롤러 클래스의 메서드는 다양한 방식으로 데이터를 전송하고 수신할 수 있다.
1. String
- JSP 파일명을 반환한다.
- ViewResolver 호출하여 jsp 파일명으로 반환했다.
@GetMapping(value="/ex06.do")
public String test() {
return "ex06";
}
2. void
- 자동으로 요청주소와 동일한 이름의 jsp 페이지를 찾아서 호출한다.
- 가독성이 좋지 않아 잘 사용하지 않는다.
@GetMapping(value="/ex06.do")
public void test() {
}
3. String(키워드)
- redirect
- forward
redirect
@GetMapping(value="/ex06.do")
public String test() {
return "redirect:/ex05.do";
}
resp.sendRedirect() 와 동일한 기능을 한다. Spring Controller에서는 resp 객체를 파라미터로 받아오지 않으므로 페이지 이동을 위해 따로 선언하지 않아도 된다.
redirect 를 사용하면 페이지 이동 시, 이동한 페이지의 주소로 url 주소가 바뀐다.
위 예시같은 경우 ex06.do로 주소를 호출했지만 호출하자마자 ex05.do로 주소를 불러 페이지와 주소가 같이 ex05.do로 바뀌게된다.
forward
pageContext.forward() 와 동일한 기능을 한다. redirect 와 다르게 페이지를 호출하면 페이지만 이동하고 주소는 바뀌지않는다.
@GetMapping(value="/ex06.do")
public String test() {
return "forward:/ex05.do";
}
4. String(키워드)
RedirectAttributes 를 사용하여 redirect 시에 데이터를 전달한다. 여기서는 "seq"와 "type"을 추가하고, 해당 값은 URL에 쿼리 파라미터로 전달된다.
주석 처리된 부분은 RedirectAttributes를 사용하지 않고 직접 URL을 조합하여 리다이렉트하는 방식이다. 하지만 위에서 사용한 방식이 더 간편하고 안전한 방법으로 데이터를 전달하는 방식이다.
@GetMapping(value="/ex06.do")
public String test(RedirectAttributes rttr) {
String seq = "5";
String type = "2";
rttr.addAttribute("seq", seq);
rttr.addAttribute("type", type);
//return "redirect:/ex05.do?seq=" + seq + "&type=" + type;
return "redirect:/ex05.do";
}
5. JSON 반환★★★
@ResponseBody 를 사용하여 데이터를 전달한다.
사용하면 메서드의 반환 값이 뷰를 통하지 않고 직접 클라이언트에게 전달된다.
주로 JSON 또는 XML과 같은 데이터 형식을 반환하는 데 사용된다.
객체 1개 일 때
@GetMapping(value="/ex06.do")
public @ResponseBody SpringDTO test() {
SpringDTO dto = new SpringDTO();
dto.setName("홍길동");
dto.setAge("20");
dto.setAddress("서울시");
return dto;
}
객체 n개 일 때
@GetMapping(value="/ex06.do")
public @ResponseBody List<SpringDTO> test() {
SpringDTO dto = new SpringDTO();
dto.setName("홍길동");
dto.setAge("20");
dto.setAddress("서울시");
SpringDTO dto2 = new SpringDTO();
dto2.setName("수수깡");
dto2.setAge("26");
dto2.setAddress("서울시");
List<SpringDTO> list = new ArrayList<SpringDTO>();
list.add(dto);
list.add(dto2);
return list;
}
jackson.jar파일 설치
@ResponseBody 사용하기 위해 jackson.jar파일 설치가 필요하다.
사이트 접속 후 'jackson' 검색
'Jackson Databind' 선택 후 최신 버전 선택
Maven 코드 복사
pom.xml 파일에 붙여넣기
'Spring' 카테고리의 다른 글
[Spring] MyBatis 와 Spring 연동하기(2) : DBCP 사용하기 (0) | 2023.11.27 |
---|---|
[Spring] MyBatis 와 Spring 연동하기(1) : XML Mapper를 사용한 연동 (0) | 2023.11.27 |
[Spring] @Controller 기초 및 데이터 송수신하기 (0) | 2023.11.25 |
[Spring] 스프링 프로젝트 설정 일괄 적용 (0) | 2023.11.24 |
[Spring] Spring AOP 기초 및 예제 (0) | 2023.11.23 |