JSP-页面跳转大全
转自:http://blog.sina.com.cn/s/blog_8c38b8b701013zzz.html
(1). forward()方法
使用到javax.servlet.RequestDispatcher类
RequestDispatcher rd = getServletContext().getRequestDispatcher("url");
rd.forward(requestVar,requestVar); //传递servlet的入口参数
即:
getServletContext().getRequestDispatcher("url").forward(requestVar,responseVar);
服务器端Servlet进行转向的4种方法:
1.ServletContext的getRequestDispatcher()
2.ServletContext的getNamedDispatcher()
3.ServletRequest的getRequestDispatcher()
4.ServletResponse的sendredirect()进行转向。
forward方法,因为这些这样比较高效。只有在forward方法不能使用时,再使用servletresponse的sendredirect()方法。
(2).response.sendRedirect(url);
其实是向浏览器发送一个特殊的Header,然后由浏览器来做转向,转到指定的页面,所以用sendRedirect时,浏览器的地址栏上可以看到地址的变化。新页面不能处理旧页面的pagecontext(request,response,...)对象.
在response.sendRedirect之后,应该紧跟一句return;
(3).HTML语言的自动跳转
<html>
<head>
<meta http-equiv="refresh" content="0;url="http://www.baidu.com">
0是等待时间,如果设置为5表示等待5s后开始跳转
</head>
…………
(4).JavaScript跳转
A:
<script languate="javascript">
window.location.replace("http://www.baidu.com");
</script>
B:也可以直接给window.location属性赋值,window.location="url",与A不同的是有历史记录
C:
<script languate="javascript">
document.location.href("http://www.google.com");
</script>
对于document,location不是不是对象,document.location=document.url
D:history对象的forward(),back(),go()方法.go()方法需要一个整形入口参数
<a href="javascript:history.go(-1)">返回上一步</a>
等价于<a href="javascript:history.back()">返回上一步</a>
E:
document.formName.action="test.jsp";
document.formName.submit(); //使用JS提交的方式
第一种:
<script language="javascript" type="text/javascript">
window.location.href="login.jsp?backurl="+window.location.href;
</script>
第二种:
<script language="javascript">
alert("返回");
window.history.back(-1);
</script>
第三种:
<script language="javascript">
window.navigate("top.jsp");
</script>
第四种:
<script language="JavaScript">
self.location='top.htm';
</script>
第五种:
<script language="javascript">
alert("非法访问!");
top.location='xx.jsp';
</script>
(5).<jsp:forward page="nextpage.jsp"/>
如:
<jsp:forward page="/servlet/login" />
<jsp:forward page="/servlet/login">
<jsp:param name="username" value="jsmith" />
</jsp:forward>
<jsp:forward>标签从一个JSP文件向另一个文件传递一个包含用户请求的request对象.
<jsp:forward>标签以下的代码,将不能执行.
可使用了<jsp:param>标签的话向目标文件传送参数和值,目标文件必须是一个动态的文件,能够处理参数.
如果你使用了非缓冲输出的话,那么使用<jsp:forward>时就要小心。如果在你使用<jsp:forward>之前,jsp文件已经有了数据,那么文件执行就会出错.
JSP页面跳转方法荟萃
1. response.sendRedirct("跳转到页面");
该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,使浏览器显示重定向网页的内容. request无法传值过去.
执行完该页所有代码,然后再跳转到页面. 跳转地址栏改变.
可以跳转到其他服务器上的页面response.sendRedirct(http://www.sun.com).
2.response.setHeader(); 该方法和response.sendRedirect一样,通过修改HTTP协议的HEADER部分.
<% response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); String
newLocn="/index.html"; response.setHeader("Location",newLocn); % >
3.<jsp:forward page="跳转页面"/>
该方法是利用服务器端先将数据输出到缓冲区的机制,在把缓冲区的内容发送到客户端之前,原来的不发送,改为发送该页面的内容,如果在<jsp:forward>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意.
request可以传值过去. 直接跳转到页面,后面的代码不执行. 跳转后地址栏不变. 无法跳转到其他服务器上的页面. 图片不是绝对路径无法显示.
4.request.getRequestDispatcher("跳转页面"); request可以传值过去. 执行完该页所有代码,然后再跳转到页面.
跳转地址栏不变. 不可以跳转到其他服务器上的页面 <% RequestDispatcher rd = request.getRequestDispatcher("to.jsp"); rd.forward(request,response); %>有以下3种方法可以做到输出重定向: RESPONSE.SETREDERECT("URL")该方法通过修改HTTP协议的HEADER部分,对浏览器下达重定向指令的,使浏览器显示重定向网页的内容.
response.sendRedirect("http://localhost:7001/index.html");
下面的方法也能改变HTTP HEADER属性,它的原理和 1 是一样的. <%response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); String newLocn="/index.html"; response.setHeader("Location",newLocn); % >
采用<JSP:FORWORD>
该方法是利用服务器端先将数据输出到缓冲区的机制,在把缓冲区的内容发送到客户端之前,原来的不发送,改为发送该页面的内容,如果在<JSP:FORWORD>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意.
自己现在知道的在一个jsp页面中嵌套另外一个jsp页面,有三种方法:
1、通过<%@ include file="header.jsp"%>这种方法只能实现静态页面的加载,最常用是在一个项目中实现通用页头header.jsp和footer.jsp的加载。
2、通过<%@ include page="tt.jsp"%>这种做法可以实现动态页面的加载,但其需要向页面传递参数;
3、通过<iframe src="jsp的路径">来向页面加载另一个jsp页面,是一个内联框架。用forward传参数的, 要这样写: <%String str="你已经登陆!"; %>
<jsp:forward page="index.jsp>
<jsp:param name="name" value= <%=str%>/>
</jsp:forward>
JSP-页面跳转大全的更多相关文章
- JSP页面跳转方式
JSP页面跳转方式 1.利用按钮+javascript进行跳转 <input type="button" name="button2" value=&qu ...
- 网站开发进阶(三十七)JSP页面跳转问题解决
JSP页面跳转问题解决 PS:本篇博文质量欠佳,仅供个人学习之用. 前言 在做Web开发时,对别人的应用(jsp+servlet)进行服务器部署时出现了页面跳转无效的情况.但是项目在本地未出现此状况. ...
- JSP 页面跳转中的参数传递
1. 从一个 JSP 页面跳转到另一个 JSP 页面时的参数传递 1)使用 request 内置对象获取客户端提交的信息 2)使用 session 对象获取客户端提交的信息 3)利用隐藏域传递数据 4 ...
- Jsp页面跳转和js控制页面跳转的几种方法
Jsp 页面跳转的几种方法 1. RequestDispatcher.forward() 在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servle ...
- JSP页面跳转
JSP页面跳转 RequestDispatcher.forward() 服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到 ...
- JSP页面跳转的几种实现方法
使用href超链接标记 客户端跳转 使用JavaScript 客户端跳转 提交表单 客户端跳转 使用response ...
- 异常之JSP页面跳转出错
今天在开发过程中发现一个问题:在页面中使用了<jsp:forward>抛错Attempt to clear a buffer that's already been flushed!! 百 ...
- 五种JSP页面跳转方法详解
1. RequestDispatcher.forward() 是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个 ...
- Springboot+MyBatis+mysql+jsp页面跳转详细示例
SpringBoot与MyBatis搭建环境,底层数据库为mysql,页面使用JSP(官网上不推荐使用jsp),完成从数据库中查询出数据,在jsp页面中显示,并且实现页面的跳转功能. 项 ...
- JS页面跳转大全
所谓的js页面跳转就是利用javesrcipt对打开的页面ULR进行跳转,如我们打开的是A页面,通过javsrcipt脚本就会跳转到B页面.目前很多垃圾站经常用js跳转将正常页面跳转到广告页面,当然也 ...
随机推荐
- .Net高级进阶,WebApi和MVC进行模型验证的时候,教你如何自由控制需要进行验证的字段?
现在,你有一个MVC架构的web项目,你要完成一个注册功能. 前台传了3个值到你的控制器,分别是账号.密码.邮箱. 如图:现在你要在控制器里面判断,账号名称.密码.邮箱不能为空,并且名称和密码不超过1 ...
- http基础知识总结
前车之鉴,后车之师. 站在各位前辈的肩膀上学习到很多知识,这里仅做记录,供自己使用 关于HTTP 我们想要打开一个网站,首先是需要往浏览器地址的URL输入框架中输入网址.当敲下回车后,通过http协议 ...
- fiddler mock ==> AutoResponder
背景 做过测试的同学,肯定都听过fiddler的大名,抓包工具,app抓包 下载传送门(https://www.telerik.com/download/fiddler) 抓包使用这里就不复述了,这次 ...
- testNG java.net.SocketException: Software caused connection abort: socket write error
执行用例报错,提示 java.net.SocketException: Software caused connection abort: socket write error java.net.So ...
- Akka(22): Stream:实时操控:动态管道连接-MergeHub,BroadcastHub and PartitionHub
在现实中我们会经常遇到这样的场景:有一个固定的数据源Source,我们希望按照程序运行状态来接驳任意数量的下游接收方subscriber.又或者我需要在程序运行时(runtime)把多个数据流向某个固 ...
- 通俗语言解释内外网IP与端口映射
IP:分为外网IP和内网IP 也就是我们说的外网IP属于实体IP 实体IP,它是独一无二的,在网络的世界里,每一部计算机的都有他的位置,一个 IP 就好似一个门牌!例如,你要去百度的网站的话,就要去『 ...
- C#使用Xamarin开发可移植移动应用进阶篇(9.混淆代码,防止反编译)
前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 今天讲讲如 ...
- 简述C/C++调用lua中实现的自定义函数
1.首先说下目的,为什么要这么做 ? 正式项目中,希望主程序尽量不做修改,于是使用C/C++完成功能的主干(即不需要经常变动的部分)用lua这类轻量级的解释性语言实现一些存在不确定性的功能逻辑:所以, ...
- ORA-06575:程序包或函数处于无效状态
今天一个朋友问我下面这段sql语句的问题,我发现了他竟然把程序员的编程思想带入了oracle,虽然是错误的,但也是很经典的错误啊. create or replace package p_view_p ...
- monogodb使用
菜鸟教程有相关介绍,已经很详细. http://www.runoob.com/mongodb/mongodb-databases-documents-collections.html 网上找了一些博客 ...