[스프링SPRING]페이지이동하기, 파라미터가지고 페이지이동하기
특정 주소를 처리하는 메서드 2가지방식(페이지이동하기)
- 리턴타입이 있는지 없는지에 따라 두가지 방식으로 나누어진다
return타입 없는 경우
- void 메서드를 사용하면 된다
- 입력하는 주소 :
http://localhost:8088/test/home
- 메서드 실행에 따라 호출되는 페이지 :
home.jsp
1 | // http://localhost:8088/test/home |
return타입 있는 경우
- string, int, 객체 등등 알맞은 데이터타입을 적어주면 된다.
- 입력하는 주소 :
http://localhost:8088/test/doC
- 메서드에 따라 호출되는 페이지 :
abc.jsp
1 |
|
파라미터가지고 페이지이동하기
- 파라미터의 데이터타입에 따라 다양하게 전달 가능
- 파라미터 앞에 애노테이션과 키명을 적어주어야한다
@ModelAttribute("키_이름")
- 예시 : 쇼핑몰로그인기능구현
파라미터 타입이 String인 경우
- 리턴타입이 String일때 리턴값
redirect: 또는 forward:
로 페이지이동하기 - 입력하는 주소 :
http://localhost:8088/test/testParam?msg="hi"
- 메서드에 따라 호출되는 페이지 :
doC.jsp
- java코드
- 파라미터를 return할때 함께 줄 수 없을까? 즉 return “doC?msg=Hi”;가 가능할까?
- NOPE 안된다.
- 그 이유는
doC?msg=hi.jsp
로 매핑이 되서 오류가 발생한다.
1 | // http://localhost:8088/test/testParam?msg="hi" |
doC.jsp
뷰 페이지 코드- 표현식에는 el표현식방식과 jsp표현식방식이 있다.
- 두가지 표현방식 중 주로 EL표현식을 사용한다.
- 그 이유는 EL표현식은 데이터가 NULL일때 컴파일에러가 없이 빈 공백으로 표시되기때문에 안정성이 높아서.
1 | <strong>(el태그 사용)</strong> 전달받은 메세지 파라미터는 ${msg } 입니다. 너의 이름은? ${name }<br> |
파라미터 타입이 객체인 경우
기존에는 request.setAttribute로 객체를 넘겼는데 스프링에서는 model객체(스프링mvc에서 제공해주는 객체)를 사용
model 객체는 객체를 저장해서 뷰페이지로 전달
model 객체 생성 방법 두가지
- 첫번째 방법: 키와값 쌍으로 전달
model.addAttribute("vo", vo);
- 두번째 방법: 키없이 객체만 전달
model.addAttribute(vo);
- 키없이 객체만 전달한 경우 받을때는 클래스 첫글자를 소문자 변경해서 el표현식으로 호출해야함.
- 첫번째 방법: 키와값 쌍으로 전달
공통코드 :
ProductVO.java
라는 객체생성
1 | // 도메인 : 프로젝트에서 중요한 의미를 가지는 명사로 ex) 회원, 글, 상품, 주문 ... 등등 |
- 동일한 페이지명으로 페이지이동시 자바코드
- 입력한 주소 : http://localhost:8088/test/doD
- 메서드에 따라 호출되는 페이지 :
doD.jsp
1 |
|
doD.jsp
뷰페이지 코드
1 | <body> |
- 다른 페이지명으로 페이지이동시 자바코드
- 입력한 주소 : http://localhost:8088/test/doD
- 메서드에 따라 호출되는 페이지 :
doDPage.jsp
1 |
|
doDPage.jsp
뷰페이지 코드
1 | <body> |