JSP 페이지 이동 url 경로 


( url-pattern .do )

 WEB.INF

    - VIEW

       - index.jsp

 - notice

 - noticeList.jsp 

 - noticeInsert.jsp


- index.jsp 에서 


<a href="notice/noticeList.do">NOTICE</a>  http://localhost:8082/mogaco/notice/noticeList.do

<a href="/notice/noticeList.do">NOTICE</a>   http://localhost:8082/notice/noticeList.do

<a href="../notice/noticeList.do">NOTICE</a>  http://localhost:8082/notice/noticeList.do


- noticeList.jsp 에서 


<a href="notice/noticeList.do">NOTICE1</a> http://localhost:8082/mogaco/info/notice/notice.do

<a href="/notice/noticeList.do">NOTICE2</a>  http://localhost:8082/notice/noticeList.do

<a href="../notice/noticeList.do">NOTICE3</a> http://localhost:8082/mogaco/notice/noticeList.do 


- noticeInsert.jsp


<a href="../notice/noticeInsert.do">공지사항 인서트1</a>

<a href="noticeInsert.do">공지사항 인서트2 </a>

<a href="/notice/noticeInsert.do">공지사항 인서트3</a> http://localhost:8082/notice/noticeInsert.do  

<a href="notice/noticeInsert.do">공지사항 인서트4 </a> http://localhost:8082/mogaco/notice/notice/noticeInsert.do


※  아무것도 없으면 프로젝트부터 현재까지 내려옴 

※   / : 현재위치 부터,    ../ : 현재한칸위로 


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 

${pageContext.request.contextPath}

절대경로 활용 


당최 서블릿 페이지 이동 에 대한 정리를 찾기 힘들어 

내가 직접 테스트 해보고 정리했다. ㅎㅎ 그래서 정확성은 보장 못함.



포워딩 방식 (return "viewname"; )


※ 주소는 viewResolver에서 /WEB-INF/view/ + " ~~~ " + .jsp  이런식으로 만들어짐.

※ 앞에 / 가 붙든 안붙든 상관없이 view/ 다음으로 간다 

※ view 밑으로 폴더 명부터 다 써주기 

※ jsp붙으니 .do아니다. 


return "notice/noticeList";  , return "/notice/noticeList";

컨테이너가 찾는 주소      /mogaco/WEB-INF/view/notice/noticeList.jsp

브라우저에 표시되는 주소 http://localhost:8082/mogaco/notice/noticeList.do


- URL 주소 유지, 즉 브라우저 모르게 컨테이너 내부에서 이동

request/response 객체 유지 

- 같은 웹 서버 내에 있는 파일들로만 이동 가능 

- 클라이언트 정보를 갖고 이동 

- 클라이언트와의 통신없이 서버에서만 처리되므로 효율이 더 좋다고함



리다이렉트 방식 ( return "redirect:/"; )


※ 주소는 컨트롤러에 재 요청하는 주소다.

※ / 가 안붙으면 안된다. 

※ 컨트롤러로 재요청하므로 url pattern 지켜줘야함 ".do"


return "redirect:/notice/noticeList.do";  

브라우저 주소  http://localhost:8082/mogaco/notice/noticeList.do  

return "redirect:/";   
브라우저 주소http://localhost:8082/mogaco/ 



- URL 주소 바뀜, 컨테이너로 재 요청(단순한 이동)

- request/response 객체 소멸 

- 같은 서버, 다른 서버 에 있는 페이지로 이동 가능 

- 잘못된 예시 


1. R 대문자 쓰면 안된다. 되돌아오면서 오류 
"Redirect:/";      

"Redirect:/notice/noticeList.do";  (http://localhost:8082/mogaco/notice/notice/noticeInsert.do ) 

2. /안붙였을때 > 폴더명 3번 붙여 찾는다. 왜지. 
"redirect:notice/noticeList.do"; ( /mogaco/WEB-INF/view/notice/notice/notice/noticeList.jsp )



ModelAndView
ModelAndView는 포워드냐 리다이렉트냐 가 아니라 
ModelAndView를 이용하여 포워드로도 리다이렉트로도 보낼 수 있는거다. 

포워드 
ModelAndView mv = new ModelAndView();
vm.setViewName("/notice/noticeList");
vm.addAttribute("message", msgService.getMessage());
return vm;
or 
req.setAttrebute("message", msgService.getMessage());
return new ModelAndView("/notice/noticeList");

리다이렉트
ModelAndView mv = new ModelAndView();
vm.setViewName("redirect:/notice/noticeList.do?noticeNumber=2");
return vm;
or
ModelAndView mv = new ModelAndView();
vm.setView(new RedirectView("/notice/noticeList.do?noticeNumber=2",true));
return vm;
 

테스트 하고 정리하느라 시간이 다 갔다. 
뭘 쓸지 여부는 response, request 유지 여부에 따라 나뉠까.? 
* 브라우저 표시되는 주소는 get,post 와 연결지어 봐서 정리해 줘야겠다.
왜냐!! 
그런데 여기서 브라우저 표시되는 주소가 현재 주소가 되니
링크가 꼬인다. 꼬리에 꼬리를 물고 모르는게 생긴다 ㅎㅎ

+redirect로 새로 요청해주어야 재 요청시 꼬이지 않는다.

그럼 리다이렉트를 쓰고, 파티쉐님께 배운 주소 지우는것도 적용해보자 

+ Recent posts