>  기사  >  Java  >  Java 서블릿의 여러 페이지 점프 방법

Java 서블릿의 여러 페이지 점프 방법

巴扎黑
巴扎黑원래의
2017-05-21 14:13:061569검색

Java 서블릿에는 여러 가지 페이지 점프 방법이 있습니다. 필요한 친구는

서블릿:

물론 서블릿에서는 doGet, doPost 및 기타 방법에서 일반적인 점프가 발생합니다. 안에.

1) 리디렉션 방법

response.sendRedirect("/a.jsp");

페이지 경로는 상대 경로입니다. sendRedirect는 반드시 이 웹 애플리케이션에만 국한되지 않고 모든 페이지로 이동할 수 있습니다.

response.sendRedirect("http://www.jb51.net");

브라우저 주소 점프 후 바가 변경됩니다.

이런 방식으로 값을 전달하려면 매개변수를 URL로 가져오거나 세션에 넣는 것만 가능합니다. request.setAttribute를 사용하여 전달할 수는 없습니다.

2) 전달 방법

RequestDispatcher Dispatcher = request.getRequestDispatcher("/a.jsp");

dispatcher .forward(요청, 응답);

페이지 경로는 상대 경로입니다. 전달 방법은 이 웹 애플리케이션의 페이지로만 이동할 수 있습니다.

점프 후에도 브라우저 주소 표시줄은 변경되지 않습니다.

이 방법을 사용하여 값을 전달할 수 있습니다: 매개변수가 있는 URL, 세션, request.setAttribute

JSP:

1) response.sendRedirect( );

은 서블릿의 response.sendRedirect()와 동일합니다.

이 문 앞에는 Out.flush()가 허용되지 않습니다. 있는 경우 예외가 발생합니다.

java.lang.IllegalStateException: 데이터가 커밋된 후에는 sendRedirect()를 사용할 수 없습니다.

com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)

...

브라우저 주소 표시줄은 다음 이후에 변경됩니다. 점프

다른 호스트로 점프하려는 경우 점프 후 이 명령문 뒤의 명령문은 마치 새 스레드가 열린 것처럼 계속 실행되지만 응답 작업은 의미가 없습니다.

동일한 호스트로 점프하려는 경우 이 명령문 뒤의 명령문은 실행이 완료될 때까지 점프하지 않습니다.

2) response.setHeader("Location","");

out.flush()가 있기 전에는 이 명령문을 사용할 수 없습니다. 그렇다면 페이지가 점프하지 않습니다.

점프 후 브라우저 주소 표시줄이 변경됩니다

이 명령문 다음에 나오는 명령문이 실행될 때까지 점프가 발생하지 않습니다

위 내용은 Java 서블릿의 여러 페이지 점프 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.