JSP 页面跳转的实现方法
客户端跳转
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 页面跳转的实现方法的更多相关文章
- Jsp页面跳转和js控制页面跳转的几种方法
Jsp 页面跳转的几种方法 1. RequestDispatcher.forward() 在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servle ...
- JSP 页面跳转中的参数传递
1. 从一个 JSP 页面跳转到另一个 JSP 页面时的参数传递 1)使用 request 内置对象获取客户端提交的信息 2)使用 session 对象获取客户端提交的信息 3)利用隐藏域传递数据 4 ...
- JSP页面跳转
JSP页面跳转 RequestDispatcher.forward() 服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到 ...
- JSP页面跳转方式
JSP页面跳转方式 1.利用按钮+javascript进行跳转 <input type="button" name="button2" value=&qu ...
- 网站开发进阶(三十七)JSP页面跳转问题解决
JSP页面跳转问题解决 PS:本篇博文质量欠佳,仅供个人学习之用. 前言 在做Web开发时,对别人的应用(jsp+servlet)进行服务器部署时出现了页面跳转无效的情况.但是项目在本地未出现此状况. ...
- ASP.NET页面跳转的三大方法详解
ASP.NET页面跳转有什么方法呢?,现在给大家介绍三种方法,他们的区别是什么呢?让我们开始吧: ASP.NET页面跳转1.response.redirect 这个跳转页面的方法跳转的速度不快,因为它 ...
- JSP页面之间传递参数的方法有哪些?
JSP页面之间传递参数的方法有哪些? 解答: 1)request 2)session 3)application 4)提交表单 5)超链接
- JSP页面跳转的几种实现方法
使用href超链接标记 客户端跳转 使用JavaScript 客户端跳转 提交表单 客户端跳转 使用response ...
- 五种JSP页面跳转方法详解
1. RequestDispatcher.forward() 是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个 ...
随机推荐
- requests https 错误
HTTPS请求进行SSL验证或忽略SSL验证才能请求成功,忽略方式为 verify=False
- Anatomy of a Database System学习笔记 - 概论、并发控制
<Anatomy of a Database System>这篇发表于87年.一共48页的论文据说是DBA入门必看,但是找了全网没有找到中文翻译.这篇文章对关系型数据库确实有提纲挈领的作用 ...
- 一些最常见的SNMP的OID自动翻译成zabbix数字进行表示(华为9306)
转载自:https://blog.51cto.com/davidbj/1173954 随着Zabbix 2.0版本的发布,很多企业开始用zabbix来代替之前的Nagio.Cacti等其它监控软件.至 ...
- POJ_1321
题目 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆 ...
- 基于SpringBoot+Mybatis+AntDesign快速开发平台,Jeecg-Boot 1.1 版本发布
Jeecg-Boot 1.1 版本发布,初成长稳定版本 导读 平台首页UI升级,精美的首页支持多模式 提供4套代码生成器模板(支持单表.一对多) 集成Excel简易工具类,支持单表.一对多导入 ...
- Echart ,X轴显示的为tooltip内显示的一部分内容放在上面显示的一部分如下图所示
如图所示:X轴只显示tooltip部分内容解决方案 在xAxis下面,实现方法如下 axisLabel: { interval: 0, formatter:function(value) { var ...
- IDEA与eclipse:vm参数调优笔记
我的电脑配置12G内存,64位,win10系统. 首先,idea,是在idea中安装目录下的bin目录下面找到位的同学注意找到idea32.exe.vmoptions的文件去编辑. 更改文件,无非大多 ...
- keil的自动补全功能
设置完之后,在.c文件上试一下,发现还是不能自动补全. 后来去各种贴吧里找到了答案,是我的.c文件还没有保存到工程文件中去,所以不能实现这个功能.
- Failed to introspect annotated methods on class 异常
用@enable时出现错误 Failed to introspect annotated methods on class 很可能是库和springboot版本不一致
- CHROME浏览器清缓存