몇 가지 방식 으로 자바 웹 페이지 의 도약 을 실현 하 다.
6344 단어 [Java 기초]
자신 이 취급 하 는 자바 프로젝트 는 페이지 전환 과 페이지 전환 을 실현 하고 임 무 를 완성 한 후에 자신 이 알 고 있 는 몇 가지 방식 을 정리 해 야 합 니 다.
실현:
먼저, 우 리 는 페이지 전환 을 실현 하 는 두 가지 방법 이 있 습 니 다. 1. JS (javascript);2. jsp 점프
우리 먼저 간단 한 js 실현 페이지 점프: 여러 가지, 여기 간단하게 3 개 소개
1、window.location.href="URL";
2、window.navigate("URL")
3、window.location.replace("URL")
self. location 과 parent. location 같은 것 도 있 습 니 다. 스스로 탐색 하 세 요.첫 번 째 window. location. href = "URL" 은 모두 가 낯 설 지 않 습 니 다. 여 기 는 소 개 를 많이 하지 않 습 니 다.두 번 째 window. navigate (URL) 는 IE 브 라 우 저 만 호 환 되 고 불 여우 나 구 글 같은 것 은 지원 되 지 않 습 니 다.이 안에 말씀 드 려 야 할 것 은 window. location. replace ("URL") 입 니 다. 예 를 들 어 설명 하 겠 습 니 다.
만약 우리 에 게 세 개의 인터페이스 가 있다 면 1. jsp;2.jsp;3. jsp, 1. jsp 에서 herf 로 2. jsp (전제 2 위 에 window. location. replace (3. jsp) 를 사용 했다 면 우 리 는 화면 3 으로 바로 갈 것 이다. window. location. herf = "URL" 과 차이 가 많 지 않 은 것 처럼 보이 지만, 우리 가 한 걸음 을 클릭 했 을 때 window. history. go (- 1), wondow. history. back () 을 호출 할 것 이다.; 방법 을 알 게 될 것 이다. 우 리 는 인터페이스 2 가 아니 라 인터페이스 1 로 바로 돌아간다.
function Location() {
window.location.href = "http://localhost:2416/Test/Index";
}
function Navigate() {
window.navigate("http://blog.csdn.net/liweizhong193516");
}// IE
function Replace() {
window.replace("http://blog.csdn.net/liweizhong193516");
}
Test / index 인터페이스 코드:
function Location() {
window.location.href = "http://blog.csdn.net/liweizhong193516";
}
window.onload = function () {
window.replace("http://blog.csdn.net/liweizhong193516");
}
코드 를 가지 고 말하자면, 내 가 단 추 를 누 르 면 Test / index 인터페이스 로 넘 어 갑 니 다. 그러나 window. onload 방법 을 실 행 했 기 때문에, 내 블 로그 인터페이스 로 넘 어 갑 니 다. 내 가 누 르 면, Test / indes 인터페이스 가 아니 라, 첫 번 째 인터페이스 로 넘 어 갑 니 다.
下面说一下jsp实现界面跳转,我们学过的转发和重定向
JSP 跳转方式大约有三种:
1、转发:
request.getRequestDispatcher("1.jsp").forward(request,response);
。 。 。 , 。
——> ——> 1——> 2——> ——>
2、 :
response.sendRedirect("success.jsp");
。 。 。 。 )
-----》 -------》 ------> -------》 -------》
, ,url
:
1、 out.flush(), , :
java.lang.IllegalStateException: Can't sendRedirect() after data has committed to the client
at com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)
2、 , , url
3、 , , , response , 。
3、
:
1、 out.flush(), , :
2、 ,
3、
4、 ,
4、在网上,还看到一个:
response.setStatus(302);
response.setHeader("location","newurl");
setHeader setStatus(302) ,302 , , out.flush(), , , ;
总结: 通过以上的总结,重要一点的是我们必须要知道的转发和重定向,转发是什么:就是用户通过浏览器发送了http请求,而web服务器接受此请求后调用一个内部方法完成请求处理并来一个转发动作将目标资源发送给用户。在这里转发的路径必须是在同一个web容器下的url,不能转到其他的web路径上去,中间传递是自己容器内部的requeset,所以,可以共享request;浏览器地址栏的url地址不会变化,我们也就感受不出来服务器做了转发。
而重定向:是用户通过浏览器发送了http请求,web服务器接受请求后发送302状态码响应(重定向)并且回应客户浏览器一个新的location,当客户浏览器发现时302响应,自动在发送一个新的http请求,请求的url就是新给的location,服务器再根据这个请求寻找相应资源并发送给用户。这里的回应的location可以是任意的url,同时因为浏览器重新发送了http请求,也就不存在request传递的概念。这时候,客户浏览器上的地址栏显示的新的url(重定向后的路径),用户可以看到地址的变化。所以,重定向行为中,浏览器至少做出了两次访问请求。