JSP 에서 페이지 이동 response. sendRedirect () 와 request. getRequestDispatcher () 의 차이
response.sendRedirect("login.jsp");
2, RequestDispatcher 대상 을 통한 forward 방법:
<!-- -->
RequestDispatcher rd = request.getRequestDispatcher("login.jsp");
rd.forward(request,response);
3. jsp 동작 명령 을 사용 하 는 방법: 제2 의 방식 과 같다.
<jsp:forward page="login.jsp"></jsp:forward>
이제 두 사람의 차 이 를 살 펴 보 자. 1) 과정 이 다르다. response. sendRedirect ("login. jsp") 방식 은 브 라 우 저가 응답 을 받 은 후에 서버 에 한 번 더 요청 한 것 과 같 기 때문에 두 번 의 요청 에 해당 한다.request. getRequestDispatcher ("login. jsp") 방식 은 방법 호출 에 해당 합 니 다. 현재 파일 을 실행 하 는 과정 에서 대상 파일 로 전환 합 니 다. 두 파일 (현재 파일 과 대상 파일) 은 같은 요청 에 속 합 니 다.2) 주소 표시 줄 이 다 릅 니 다: response. sendRedirect ("login. jsp") 방식 에서 사용자 가 브 라 우 저 주소 표시 줄 에서 본 것 은 대상 파일 의 주소 입 니 다. 즉, 주소 표시 줄 이 변 합 니 다. request. getRequestDispatcher () 방식 에서 사용자 가 브 라 우 저 주소 표시 줄 에서 본 것 은 현재 문서 의 주소 입 니 다. 즉, 주소 표시 줄 이 변 하지 않 습 니 다.
3) 데이터 공유 각도: request. getRequestDispatcher () 는 전송 을 요청 하고 앞 뒤 페이지 에 request 를 공유 합 니 다.response. sendRedirect () 는 다시 방향 을 정 합 니 다. 앞 뒤 페이지 는 request 가 아 닙 니 다.sendRedirect 두 번 제출, forword 한 번 제출
다른 웹 프로젝트 의 한 주소 로 요청 을 옮 길 필요 가 있다 면 아래 방법 을 누 를 수 있 습 니 다.
1. Web App ServletConext (currentServletContext.getContext(uripath)).
2. ServletContext.getRequestDispatcher(String url) 。
eg:
ServletContext.getRequestDispatcher("smserror.jsp").forward(request,response);
4), 매개 변수 전달 에 있어 response. sendRedirect (url) 는 지정 한 URL 주소 로 이동 하여 새로운 request 를 생 성 합 니 다. 따라서 매개 변 수 는 url 뒤에 매개 변 수 를 추가 해 야 합 니 다. 예 를 들 어 url? id = 1. request. getRequestDispatcher (url). forward (request, response) 는 요청 을 지정 한 URL 로 직접 전송 하기 때문에 이 요청 은 이전 요청 한 데 이 터 를 직접 얻 을 수 있 습 니 다.데 이 터 는 request. setAttribute () 방법 으로 request 에 밀봉 할 수 있 습 니 다.요청 퍼 가기 로 요청 대상 이 항상 존재 하 며 다시 만 들 지 않 는 다 는 것 이다.sendRedirect () 는 request 대상 을 새로 만 들 기 때문에 이전 request 의 데 이 터 를 잃 어 버 립 니 다.
5) 기능 상: response. sendRedirect () 방법 은 현재 프로그램의 다른 자원 으로 방향 을 정할 수 있 고 같은 사이트 의 다른 프로그램의 자원 으로 방향 을 바 꿀 수 있 으 며 심지어 절대 URL 을 사용 하여 다른 사이트 의 자원 으로 방향 을 바 꿀 수 있 습 니 다.
response.sendRedirect(“http://www.baidu.com”)
request. getRequestDispatcher ("login. jsp") 방법 은 같은 웹 프로그램 에 있 는 자원 사이 에서 만 요청 을 전달 할 수 있 습 니 다.
response.sendRedirect(“login.jsp”);request. getRequestDispatcher ("login. jsp");요청 과정 은 다음 과 같 습 니 다. redirect 는 먼저 response 를 브 라 우 저 에 보 낸 다음 브 라 우 저 에서 이 response 를 받 은 후에 requeset 를 서버 에 보 낸 다음 서버 에서 새로운 response 를 브 라 우 저 에 보 냅 니 다. 이 때 페이지 에서 받 은 request 는 브 라 우 저 에서 새로 보 낸 것 입 니 다.
forward 는 서버 내부 에서 발생 하여 브 라 우 저가 전혀 모 르 는 상태 에서 브 라 우 저의 다른 페이지 의 response 를 보 냈 습 니 다. 이 때 페이지 에서 받 은 request 는 브 라 우 저 에서 직접 보 낸 것 이 아니 라 request. setAttribute 로 request 에 데 이 터 를 넣 었 을 수도 있 습 니 다. 이동 하 는 페이지 에 서 는 request. getAttribute 로 데 이 터 를 직접 얻 을 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.