RESTful(6) - @ResponseBody써서 Json형태 객체로 반환해주기 + 상태값 설정
2019. 11. 26. 11:21ㆍ🔴 Spring
300x250
<MemberListController.java>
package com.bitcamp.mm.member.controller;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.bitcamp.mm.member.domain.ListViewData;
import com.bitcamp.mm.member.domain.SearchParam;
import com.bitcamp.mm.member.service.MemberListService;
@Controller
public class MemberListController {
@Autowired
private MemberListService listservice;
@RequestMapping("/member/memberList")
public String memberList(
@RequestParam(value = "p", defaultValue = "1") int pageNumber,
@RequestParam(value = "stype", required = false) String stype,
@RequestParam(value = "keyword", required = false) String keyword,
Model model) {
SearchParam searchParam = null;
if(stype != null && keyword != null) {
searchParam = new SearchParam();
searchParam.setType(stype);
searchParam.setKeyword(keyword);
}
// service
ListViewData listdata = listservice.getListData(pageNumber, searchParam);
System.out.println("전체 회원의 수 : "+ listdata.getTotalCount());
/*
* for(MemberInfo m : listdata.getMemberList()) { System.out.println(m); }
*/
model.addAttribute("viewData", listdata);
return "member/memberList";
}
// responsebody써서 Json형태 객체로 반환해주기 + 상태값 설정
// 방법 1
@RequestMapping("/member/memberListJson")
public @ResponseBody ListViewData memberListJson(
@RequestParam(value = "p", defaultValue = "1") int pageNumber,
@RequestParam(value = "stype", required = false) String stype,
@RequestParam(value = "keyword", required = false) String keyword,
HttpServletResponse response) {
SearchParam searchParam = null;
if(stype != null && keyword != null) {
searchParam = new SearchParam();
searchParam.setType(stype);
searchParam.setKeyword(keyword);
}
// service
ListViewData listdata = listservice.getListData(pageNumber, searchParam);
System.out.println("전체 회원의 수 : "+ listdata.getTotalCount());
// 상태값 설정
//response.setStatus(HttpServletResponse.SC_OK); // = 200코드
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return listdata;
}
// 방법 2
// 반환 타입이 ResponseEntity<T> : Spring 4.2이상
// 반환하는 Body, statusCode, HttpHeader
@RequestMapping("/member/memberListJson2")
@ResponseBody
public ResponseEntity<ListViewData> memberListJson2(
@RequestParam(value = "p", defaultValue = "1") int pageNumber,
@RequestParam(value = "stype", required = false) String stype,
@RequestParam(value = "keyword", required = false) String keyword) {
SearchParam searchParam = null;
if(stype != null && keyword != null) {
searchParam = new SearchParam();
searchParam.setType(stype);
searchParam.setKeyword(keyword);
}
// service
ListViewData listdata = listservice.getListData(pageNumber, searchParam);
System.out.println("전체 회원의 수 : "+ listdata.getTotalCount());
// 응답할 때 상태코드 포함시켜서 넘김
ResponseEntity<ListViewData> entity = new ResponseEntity<ListViewData>(listdata, HttpStatus.OK);
return entity;
}
}
방법 1 : @ResponseBody를 써서 Json형태로 반환해주었고, setStatus()를 통해 상태값을 설정해줬다.
방법 2 : 반환되는 데이터 타입을 ResponseEntity<T>에서 지정해줬고, 상태값은 응답할때 데이터와 함께 보낸다.
주요 상태코드로는 아래와 같이 있다 :
코드 | 설명 |
200 | 서버가 사용자의 요청에 정상적으로 처리함 |
400 | 사용자의 요청에 서버가 제대로 인식 못함 |
401 | 사용자가 서버의 자원을 요청할 권한이 없음 |
403 | 서버가 사용자의 요청을 거부하고 있음 |
404 | 사용자가 서버에 존재하지 않는 페이지에 대해 요청함 |
500 | 서버에 오류가 발생하여 요청을 수행할 수 없음 |
300x250
'🔴 Spring' 카테고리의 다른 글
RESTful(8) - @RequestBody & @ResponseBody란? (0) | 2019.11.26 |
---|---|
RESTful(7) - RESTful server구현해보기 (간단예제!) (0) | 2019.11.26 |
RESTful(5) - @JsonIgnore (0) | 2019.11.26 |
RESTful(4) - @RestController 사용하기 (단순문자열, 객체타입, List타입, Map타입) (0) | 2019.11.26 |
RESTful(3) - JAXB2 API이용해서 XML처리하기 (0) | 2019.11.25 |