转自: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-页面跳转大全的更多相关文章

  1. JSP页面跳转方式

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

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

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

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

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

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

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

  5. JSP页面跳转

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

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

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

  7. 异常之JSP页面跳转出错

    今天在开发过程中发现一个问题:在页面中使用了<jsp:forward>抛错Attempt to clear a buffer that's already been flushed!! 百 ...

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

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

  9. Springboot+MyBatis+mysql+jsp页面跳转详细示例

           SpringBoot与MyBatis搭建环境,底层数据库为mysql,页面使用JSP(官网上不推荐使用jsp),完成从数据库中查询出数据,在jsp页面中显示,并且实现页面的跳转功能. 项 ...

  10. JS页面跳转大全

    所谓的js页面跳转就是利用javesrcipt对打开的页面ULR进行跳转,如我们打开的是A页面,通过javsrcipt脚本就会跳转到B页面.目前很多垃圾站经常用js跳转将正常页面跳转到广告页面,当然也 ...

随机推荐

  1. 【转载】B树、B-树、B+树、B*树

    转载自http://blog.csdn.net/manesking/archive/2007/02/09/1505979.aspx B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和 ...

  2. Redis集群之优化系统参数

    1.最大打开文件数量 (1)编辑资源限制文件,针对redis用户做资源访问控制,在文件尾加入最后两行, sudo vim /etc/security/limits.conf (2) sudo vim ...

  3. LAMP环境的搭建(四)----Apache下部署项目

    根据前文完成了LAMP基本环境的安装,那么接下来就是部署线上的环境了. yum 安装的apache 目录存在于  /etc/httpd apache最重要的文件就是 httpd.conf.  目录再 ...

  4. Brackets 1.8 开源+免费的Web前端网页文本编辑工具

    Brackets 1.8 开源+免费的Web网页文本编辑工具   -------------->> ---------------------- A modern, open source ...

  5. Nodejs进阶:使用DiffieHellman密钥交换算法

    ## 简介 Diffie-Hellman(简称DH)是密钥交换算法之一,它的作用是保证通信双方在非安全的信道中安全地交换密钥.目前DH最重要的应用场景之一,就是在HTTPS的握手阶段,客户端.服务端利 ...

  6. 2_linux 常用基本命令

    相信当你看到此帖子时,你已不再是当年那个颓废的你,你一定也在追梦的路上奔跑,那么请留下你的“梦”,让我们用心去交流,好吗? 废话不多说,直接说正事! 一.查看磁盘分区 1.fdisk -l  查看磁盘 ...

  7. 微信小程序周报(第十三期)-极乐商店(store.dreawer.com)出品

    重要:极乐商店域名变更:wxapp.dreawer.com/变更为store.dreawer.com/ 每周一笑 当年刚学打篮球的时候,疯狂地迷恋上了乔丹,然后迷恋上了NIKE,更熟记了NIKE的那句 ...

  8. 大数据平台搭建-spark集群安装

    版本要求 java 版本:1.8.*(1.8.0_60) 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downl ...

  9. vue.js路由参数简单实例讲解------简单易懂

    vue中,我们构建单页面应用时候,一定必不可少用到vue-router vue-router 就是我们的路由,这个由vue官方提供的插件 首先在我们项目中安装vue-router路由依赖 第一种,我们 ...

  10. 移动端车牌识别ocr系统

    移动端车牌识别ocr系统优点: 1.识别速度快:高度优化的车牌定位和识别算法,识别时间≤50毫秒(200万图片). 2.识别率:白天识别率≥99.7%:夜间识别率≥98%. 3.识别速度:单张图片识别 ...