void타입
호출하는 URL과 동일한 뷰 이름을 나타냄 => mav.setViewName("goHome0101")
@GetMapping("/goHome0101")
public void home0101() {
log.info("home0101");
//return "goHome0101"=> /views/goHome0101.jsp
}
@GetMapping("/sub/goHome0102")
public void home0102() {
log.info("home0102");
// /views/sub/goHome0102.jsp => 생략함
}
String 타입
- 뷰 파일의 경로와 파일이름 나타냄
@GetMapping("/sub/goHome0203")
public String home0203() {
log.info("home0202");
//forwarding :jsp
// /views/home0202.jsp
return "sub/home0203";
}
- 반환값 "redirect:"로 시작하면 리다이렉트 방식으로 처리함
@GetMapping("/goHome0204")
public String home0204() {
log.info("home0204");
return"redirect:/sub/goHome0205";
}
@GetMapping("/sub/goHome0205")
public String home0205() {
log.info("home0205");
//forwarding
return"/sub/home0205";
}
"/"로 시작하면 웹 애플리케이션의 컨텍스트 경로에 영향을 받지 않는 절대 경로 의미
JSON(JavaScript Object Notation)
자바빈즈 클래스타입
JSON 객체 타입의 데이터를 만들어서 반환
MemberVO타입의 member 객체 ⇒ String(serialize)
@ResponseBody : JSON 객체 타입의 데이터를 만들어서 반환
@ResponseBody
@GetMapping("/goHome0301")
public MemberVO home0301() {
log.info("home0301");
MemberVO member = new MemberVO();
return member;
}
컬렉션 List 타입
@ResponseBody : 반환값이 컬렉션 List 타입이면 JSON객체 배열 타입으로 자동으로 변환
@ResponseBody
@GetMapping("/goHome04")
public List<MemberVO> home04(){
List<MemberVO> list = new ArrayList<MemberVO>();
MemberVO member = new MemberVO();
list.add(member);
MemberVO member2 = new MemberVO();
list.add(member2);
return list;
}
ResponseEntity<byte[]>타입
response 할 때 Http 헤더 정보와 바이너리(binary)
binary : 2개(0,1) => 사진, 영상, 음성, 파일 데이터를 전달하는 용도로 사용
Stream : 파일을 읽거나 쓸 때, 네트워크 소켓을 거쳐 통신할 때 쓰이는 추상적인 개념
데이터가 전송되는 통로
InputStream : 추상 클래스. 데이터가 들어오는 통로의 역할에 관해 규정하고 있음
1) 데이터를 읽어야 함 2) 남은 데이터 확인 3) 데이터 skip 가능 4) close가능(통로 제거)
5) 특정 시점부터 다시 읽을 수 있음
@ResponseBody
@GetMapping("/goHome1101")
public ResponseEntity<byte[]> home1101() throws IOException {
log.info("home1101");
InputStream in = null;
//응답객체
ResponseEntity<byte[]> entity = null;
HttpHeaders headers = new HttpHeaders();
try {
// 이미지가 있는 경로 찾아야함
in = new FileInputStream("C:\\Users\\PC-15\\git\\repository\\springProj\\src\\main\\webapp\\resources\\img\\avatar5.png");
//png 이미지라는 것을 헤더에 알려줘서 세팅함
headers.setContentType(MediaType.IMAGE_PNG);
//이미지를 읽은 결과 객체를 응답 개체에 할당
entity = new ResponseEntity<byte[]>(IOUtils.toByteArray(in),headers,HttpStatus.CREATED);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
in.close();
}
return entity;
}
@ResponseBody
@GetMapping("/goHome1102")
public ResponseEntity<byte[]> home1102() throws IOException{
log.info("home1102");
InputStream in =null;
ResponseEntity<byte[]> entity= null;
HttpHeaders headers = new HttpHeaders();
try {
in = new FileInputStream("C:\\Users\\PC-15\\git\\repository\\springProj\\src\\main\\webapp\\resources\\img\\avatar5.png");
headers.setContentType(MediaType.IMAGE_PNG);
entity = new ResponseEntity<byte[]>(IOUtils.toByteArray(in),headers,HttpStatus.CREATED);
} catch (FileNotFoundException e) {
e.printStackTrace();
entity = new ResponseEntity<byte[]>(HttpStatus.BAD_REQUEST);
}finally {
in.close();
}
return entity;
}
'JAVA > spring' 카테고리의 다른 글
어노테이션 (0) | 2024.05.04 |
---|---|
컨트롤러 메서드 매개변수 (0) | 2024.05.04 |
컨트롤러 요청 매핑 (0) | 2024.04.29 |
Spring - 타일즈(Tiles) (1) | 2024.04.26 |
ckeditor5 사용법 (0) | 2024.04.26 |