[스프링SPRING]redirect나forward로 페이지이동하기, JSON데이터처리하기
리턴타입 String일 때 리턴값을 redirect: 또는 forward:
줘서 페이지이동
redirect: 또는 forward:
페이지이동 메서드에서 String 리턴시 주소 앞에 사용
다양한 값들을 객체에 넣어서 파라미터로 전달
- 매개변수 객체에 데이터를 넣을 때 키값을 정하지 않고 value만 넣는 경우 자동으로 value의 데이터타입으로 전달된다.
- 예를 들어
model.addAttribute("1234test")
한 경우string=1234test
를 주소에 붙어서 전달 - 다른 예로
model.addAttribute(132)
인 경우integer=132
를 주소에 붙어서 전달
- 예를 들어
- 자바코드
- key와 value를 객체에 넣기 :
model.addAttribute("msg", "4567test");
- string을 객체에 넣기 :
model.addAttribute("1234test");
- int를 객체에 넣기 :
model.addAttribute(132);
- 객체생성해서 객체에 넣기 :
model.addAttribute("msg", new ProductVO("moniter", 2000));
=> 불가능
- key와 value를 객체에 넣기 :
- 입력한 주소 : http://localhost:8088/test/doE
- 메서드에 따라 호출되는 페이지 :
doF.jsp
1 |
|
doF.jsp
뷰페이지 코드 (공통코드)- 다양한 방법으로 파라미터 값을 가져와서 출력하려고 노력해보았다
- key와 value를 객체에 넣은 경우 출력하기 :
${키_이름 }
- string을 객체에 넣은 경우 출력하기 :
${param.integer }
- int를 객체에 넣은 경우 출력하기 : ${param.string }`
- 키값이 없는 경우에는
param.자동으로_지정된_파라미터명
으로 가져와야한다. 왜냐하면 param데이터 영역안에 값이 들어있기때문이다. - 키값이 없는 경우
${requestScope.자동으로_지정된_파라미터명 }
를 사용해서 출력하려했으나 출력되지 않았다. 왜일까…? 강사님께 물어봤는데 자신도 찾아봐야겠다고하셨다…
1 | <body> |
RedirectAttributes클래스 사용하여 파라미터 1회성으로 전달하기
rttr.addFlashAttribute("msg", "flash!");
: 주소줄에 안보임, El표현식가능, jsp표현식불가능, 새로고침하면 사라짐(즉 1회성 데이터)- 예를 들어 카운트를 올릴때 새로고침시 계속 조회수가 올라가는 것이 아니라 한번 올라가게끔 만들때 addFlashAttribute 사용
rttr.addAttribute("msg", "add!");
: 주소줄에 보임, El표현식가능, jsp표현식가능, 새로고침해도 그대로
- 자바코드
1 |
|
doF.jsp
뷰페이지코드
1 | 메세지(키값 msg) : ${msg }<br> |
데이터를 JSON으로 변경한 뒤 파라미터 전달하기
- JSON데이터로 만들기 순서
- 라이브러리 복붙
- doJSON()메서드 생성
Jackson Databind 라이브러리 추가
- Jackson Databind » 2.8.4 버전코드를 복사하여 프로젝트의
po,.xml
에 붙여넣기 - 복붙시 꼭 dependencies 태그 안에 위치시켜야한다.
1 | (중략) |
doJSON()메서드 생성
ProductVO.java
객체생성- 자바코드에서 사용할 json을 담을 객체를 만들어보자
1 | //자바빈(DTO == VO)설계규약 |
- 자바코드
- VO데이터를 JSON데이터로 변경시키기위해서 리턴타입앞에
@ResponseBody
을 사용한다.
- VO데이터를 JSON데이터로 변경시키기위해서 리턴타입앞에
1 |
|
- 뷰페이지 출력값
- 뷰페이지(.jsp)를 따로 만들지않아도 서버를 통해 json데이터를 화면에서 볼 수 있다.
1 | // 출력값 |