客户端跳转

1. 使用 href 超链接标记  <a href="new.jsp">跳转</a>

2. 使用表单提交完成跳转  <form action="new.jsp"> ... </form>

3. 使用 JavaScript

4. 使用 response.sendRedirect(String path) 重定向

服务器端跳转

5. 使用 request.getRequestDispatcher("目标页面").forward(request, response) 转发

6. <jsp:forward page="目标页面"> 该方法底层实现是通过request.getRequestDispatcher("目标页面").forward(request, response)

--------------------------------------------------------------------------------------------------------------------------------------------

1. 使用 href 超链接标记(客户端跳转)

这个比较简单,通常写到 <a> 标签中即可。

<a> 标签定义超链接,用于从一个页面链接到另一个页面

<a> 元素的最重要的属性是 href 属性,用于指定链接的目标

适用于完成指定位置的动态跳转

<a href="new.jsp">跳转</a>
<a href="http://www.runoob.com">访问菜鸟教程!</a>

2. 通过表单提交完成跳转(客户端跳转)

将整个 form 表单数据提交到方式

<form name="form1" method="POST" action="new.jsp">
<input type="text" name="name" />
<input type="text" name="pad" />
<input type="submit" value="提交" />
<input type="reset" value="重置">
</form>

3. 使用 JavaScript(客户端跳转)

1)可以在 JavaScript 代码里面写提交表单的写法

<script type="text/javascript">
function submit() {
with(document.getElementById("queryFunction")){
action="new.jsp";
method="post";
submit();
}
}
</script>

2)可以直接定位,给 window.location 赋值,而不是提交表单

使用 replace() 方法与定位  window.location 的差别是前者没有历史记录

<script type="text/javascript">
function go{
window.self.location="new.jsp";
}
</script>
<!-- 或者 -->
<script type="text/javascript">
window.location.replace("http://www.baidu.com");
</script>

3)使用 history 对象的 forword(),back(),go() 方法

其中 go() 方法需要一个整型入口参数

下面两句代码的功能相同

<a href="javascript:history.back()">返回上一步</a>
<a href="javascript:history.go(-1)">返回上一步</a>

4. 使用 JSP 的内置对象 response(客户端跳转)

1)直接使用 sendRedirct() 重定向,重定向后在浏览器地址栏上会出现重定向页面的 URL

sendRedicrect() 中的 URL 可以是带参数的,例如 response.sendRedirect("url?name=" + name),因此我们可以在跳转到时候传递参数。

一般 response.Redirect() 之后会紧跟一句 return; 我们已经知道 response.sendRedirect() 是通过浏览器来完成跳转的,所以在页面处理完成后才会有实际的动作。

既然已经跳转了,那么后面的输出就已经没有意义了,而且有可能会因为后面的输出导致跳转的失败。

<%
response.sendRedirect("http://www.baidu.com");
return;
%>

2)使用 setHeader() 方法,直接修改地址栏,同样可以实现页面的重定向

标准格式:response.setHeader("Refresh", "等待的秒数; url=绝对路劲或者相对路径");

<%
response.setHeader("refresh", "1;url=http://www.baidu.com");
%>

5. 使用 requestDispatcher 类(服务器端跳转)

Servlet 可以通过两种方式得到 RequestDispatcher 对象:

-- ServletContext 的 getRequestDispatcher(String path)   path为绝对路径

-- ServletRequest 的 getRequestDispatcher(String path)    path可以为绝对路径,也可以为相对路径

RequestDispatcher rd = request.getRequestDispatcher("目标页面");
rd.forward(request, response);

response.sendRedirect(String path) 重定向和 requestDispatcher.forward(request, response) 跳转的区别

response.sendRedirect(path) 重定向:

1)在浏览器中重定向

2)执行完所有的代码后再跳转到目标页面

3)跳转到目标页面后浏览器地址栏的URL会改变

4)可以跳转到其他服务器上的页面,如 “http://www.baidu.com”

5)通常和 return 配合使用

requestDispatcher.forward(request, response)

1)在服务器端转发

2)直接跳转到目标页面,其后的代码不再执行

3)跳转到目标页面后浏览器地址栏的URL不会改变

4)无法跳转到其他服务器的页面

5)当身处循环或者可能有多个 forword() 需要和 return 配合使用

JSP 页面跳转的实现方法的更多相关文章

  1. Jsp页面跳转和js控制页面跳转的几种方法

    Jsp 页面跳转的几种方法 1. RequestDispatcher.forward() 在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servle ...

  2. JSP 页面跳转中的参数传递

    1. 从一个 JSP 页面跳转到另一个 JSP 页面时的参数传递 1)使用 request 内置对象获取客户端提交的信息 2)使用 session 对象获取客户端提交的信息 3)利用隐藏域传递数据 4 ...

  3. JSP页面跳转

    JSP页面跳转  RequestDispatcher.forward() 服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到 ...

  4. JSP页面跳转方式

    JSP页面跳转方式 1.利用按钮+javascript进行跳转 <input type="button" name="button2" value=&qu ...

  5. 网站开发进阶(三十七)JSP页面跳转问题解决

    JSP页面跳转问题解决 PS:本篇博文质量欠佳,仅供个人学习之用. 前言 在做Web开发时,对别人的应用(jsp+servlet)进行服务器部署时出现了页面跳转无效的情况.但是项目在本地未出现此状况. ...

  6. ASP.NET页面跳转的三大方法详解

    ASP.NET页面跳转有什么方法呢?,现在给大家介绍三种方法,他们的区别是什么呢?让我们开始吧: ASP.NET页面跳转1.response.redirect 这个跳转页面的方法跳转的速度不快,因为它 ...

  7. JSP页面之间传递参数的方法有哪些?

    JSP页面之间传递参数的方法有哪些? 解答: 1)request 2)session 3)application 4)提交表单 5)超链接

  8. JSP页面跳转的几种实现方法

    使用href超链接标记      客户端跳转 使用JavaScript               客户端跳转 提交表单                        客户端跳转 使用response ...

  9. 五种JSP页面跳转方法详解

    1. RequestDispatcher.forward() 是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个 ...

随机推荐

  1. 0 Python学习计划

    每天一小节,坚持水滴石穿. 2019-4-1 景略

  2. [WSGI]WSGI的服务端怎么实现?

    WSGI ( Python Web Server GateWay Interface) 是一个用在python web server 跟web application 之间的协议,遵从WSGI协议设计 ...

  3. docker php容器中简单添加seaslog拓展

    最近有个项目用到了seaslog,因为之前调试php的容器已经搭好了,不想再通过dockerfile重新搭建了,搜了半天没有东西可以装,就仿照着安装redis拓展操作了一顿 1.wget http:/ ...

  4. nginx 的安装、启动、停止与重启

    一.nginx 基本介绍 1.Nginx 是单进程单线程模型,也就是启动的工作进程只有一个线程响应客户端请求,而 apache 可以在一个进程内启动多个线程响应客户端请求.所以 nginx 的内存占用 ...

  5. 贝叶斯公式与最大后验估计(MAP)

    1, 频率派思想 频率派思想认为概率乃事情发生的频率,概率是一固定常量,是固定不变的 2, 最大似然估计 假设有100个水果由苹果和梨混在一起,具体分配比例未知,于是你去随机抽取10次,抽到苹果标记为 ...

  6. 安装和使用Docker(Windows7)

    1.Boot2Docker Boot2Docker是实现Docker的软件.Windows下的Docker只适合于开发测试(大部分人也就是干开发测试的..),不适合于生产环境. Boot2Docker ...

  7. Post返回json中文乱码

    来源:http://blog.csdn.net/xiaoxuonl/article/details/54315612 服务器返回的是utf-8,jsp页面上也是utf-8,数据库也是utf-8怎么就是 ...

  8. UVALive 3942 Remember the Word

    题意:给出一个由S个不同单词组成的字典和一个长字符串.把这个字符串分解成若干个单词的连接(单词可以重复 使用),有多少种方法? Sample Input abcd 4 a b cd ab Sample ...

  9. “AS3.0高级动画编程”学习:第一章高级碰撞检测

    AdvancED ActionScript 3.0 Animation 是Keith Peters大师继"Make Things Move"之后的又一力作,网上已经有中文翻译版本了 ...

  10. Dubbo 的配置主要分为三大类

    服务发现.服务治理和性能调优:这三类配置不是独立存在的,而是贯穿在所有配置项中的,比如dubbo:service 标签中的interface 是服务发现类, timeout是性能调优类, mock 是 ...