개발 공부/WEB

redirect / forward

공부하는개발자_ 2023. 7. 11. 17:58

 

redirect

request객체는 응답 후 바로 사라 짐.

서버측에서 header값만 응답. 응답받아서 요청하는 구조 

클라이언트에서 재요청하도록 응답 header설정필요

response.sendRedirect("http://www.naver.com");

클라이언트 측의 주소 url이 변경 된다

http://localhost:8888/back/a 에서 http://www.naver.com 으로 주소구조가 바뀜

ex) 소셜 인증

 

 

 

 

forward

RequestDispatcher rd;

rd = request.getRequestDispatcher("/c");

rd.forward(request.response);

 

기존페이지에서 사용되었던 request의 parameter와 attribute를 forward에서 사용 가능

기존페이지(/b )가 갖고 있던 request와 response를 /c로 전달. 

 

사용 이유: 서블릿에서 요청을 받아서 어떻게 이동하라는 제어의 역할만 함. (=controller) 결과를 응답할 역할은 안 함. 

 

ex) spring MVC기본 구조

 

 

 

호스트:포트/패스

현재경로.

상위경로..

 

 

 

 

 

 

 

 

 

페이지 변경하고 싶은 경우 ?cp=2, 3,4입력하면 변경됨!

 

 

 

 

 

 

상품 리스트를 어느 객체에 담아 둘 것인가?

request.setAttribute("list", list);

parameter:  요청전달데이터로 자동 채워짐. 

attribute: 개발자가 직접 셋팅 가능. 

 

 

 

ProductListMVC에 있던 응답과 관련된 코드를 ProductListView파일을 만들어 따로 관리해줌!

 

 

처리속도는 1번이 더 빠르다

 

 

2번은 요청 받은 컨트롤러에서 이동할 뷰로 이동하여 결과를 view가 응답하기 때문에 시간이 더 걸림.

객체도 2개가 있어야함. 그러함에도 사용하는 경우는 응답 내용이 많을 경우 사용

문제점: 백 개발자 영역과 디자인 영역 분리 모호해짐

=> 뷰어형태가 JSP되도록 해야 함

 

 

JSP : html태그와 java코드를 분리하기 위한 목적

 

확장성이 떨어짐.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

jsp 기존 객체 내용과 요청된 jsp의 내용이 다른경우 객체 소멸됨

 

 

 

 

 

 

 

 

scriptlet과 expression은 비추. 대신 Expression Language, useBean 태그를 이용하길 권장.

 

 

 

 

 

 

 

포함하려면 include태그를 써야한다.

 

 

 

 

 

제한이 많으므로 사용하지 않도록 권고..

 

scriptlet과 expression은 비추. 대신 EL(ExpressionLanguage)를 대신하라

 EL(ExpressionLanguage) : expression을 구체화한 언어

 

 

${ javabean/ 맵 자료구조   . 프로퍼티/    }

 

java script처럼 연산 (java X)

 

${empty param.id? "아이디없음":param.id}

null이거나 빈 문자열이면 true를 반환하는 연산자

 

EL문법에는 조건문, 반복문이 없기때문에 JSTL공부를 따로 해야함.

 

JSTL (JSP Standard Tag Library)

라이브러리를 다운받아 설치 후 사용해야 함.

EL문법 기반으로 작성해주어야 함. 

JSP에도 내장 메서드가있다

 

pageContext: 사용자 정의 태그 만들때 사용하면 됨. 매번 새로 만들어짐

 

greeting용 객체 특정메서드에서 pageContext를 얻어냄

jsp용객체에서 greeting용객체를 사용할 때 pageContext만 전달하면 된다.

id값을 Greeting용 객체에서 찾아낼 수 있다.

사용자 정의 태그용 객체에 pageContext가 전달되어 getRequest를 통해 사용중인 객체를 얻어 낼 수 있고

출력스트림 객체도 얻어올 수 있다.  pageContext는 jsp객체에서는 의미 없으나 사용자정의 태그에서는 jsp정보를 사용해야 하기 때문에 pageContext를 많이 사용한다. 

PageContext.setAttribute(" 이름 ", 값 ) ;

지금 사용중인 pageContetxt에 attribute를 추가하는 것

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'개발 공부 > WEB' 카테고리의 다른 글

Session Tracking : 상태 정보 유지기술  (0) 2023.07.13
jsp / Servlet  (0) 2023.07.12
Servlet  (0) 2023.07.10
Jackson library 설치  (0) 2023.07.07
ajax / jquery  (0) 2023.07.05