现在介绍一下五种关于jsp的跳转。

1.RequestDispatcher.forward()

是在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在 b.jsp都可以获得,参数自动传递.

但forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward()无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute("name",name)来传至下一个页面。

重定向后浏览器地址栏URL不变。

例:在servlet中进行重定向

public void doPost(HttpServletRequest request,HttpServletResponse response) throws

ServletException,IOException

{

response.setContentType("text/html; charset=gb2312");

ServletContext sc = getServletContext();

RequestDispatcher rd = null;

rd = sc.getRequestDispatcher("/index.jsp"); //定向的页面

rd.forward(request, response);

}

通常在servlet中使用,不在jsp中使用。

2.response.sendRedirect()

是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件.

重定向后在浏览器地址栏上会出现重定向页面的URL

例:在servlet中重定向

public void doPost(HttpServletRequest request,HttpServletResponse response)

throws ServletException,IOException

{

response.setContentType("text/html; charset=gb2312");

response.sendRedirect("/index.jsp");

}

由于response是jsp页面中的隐含对象,故在jsp页面中可以用response.sendRedirect()直接实现重定位。

注意:

(1) 使用response.sendRedirect时,前面不能有HTML输出

这并不是绝对的,不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制,一般在8K(我是说 JSP SERVER),这就意味着,除非你关闭了cache,或者你使用了out.flush()强制刷新,那么在使用sendRedirect之前,有少量的HTML输出也是允许的。

(2) response.sendRedirect之后,应该紧跟一句return;

我们已经知道response.sendRedirect是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。

比较:

(1) Dispatcher.forward()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;

(2) response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。

前者更加高效,在前者可以满足需要时,尽量使用RequestDispatcher.forward()方法.

注:在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。

3.

它的底层部分是由RequestDispatcher来实现的,因此它带有RequestDispatcher.forward()方法的印记。

如果在之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。

另外要注意:它不能改变浏览器地址,刷新的话会导致重复提交

4.修改HTTP header的Location属性来重定向

通过设置直接修改地址栏来实现页面的重定向。

jsp文件代码如下:

response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);

String newLocn = "/newpath/jsa.jsp";

response.setHeader("Location",newLocn)

%>

5.JSP中实现在某页面停留若干秒后,自动重定向到另一页面

在html文件中,下面的代码:

它的含义:在5分钟之后正在浏览的页面将会自动变为target.html这一页。代码中300为刷新的延迟时间,以秒为单位。targer.html为你想转向的目标页,若为本页则为自动刷新本页。

由上可知,可以通过setHeader来实现某页面停留若干秒后,自动重定向到另一页面。

关键代码:

String content=stayTime+";URL="+URL;

response.setHeader("REFRESH",content);

java之跳转_java学习之五种跳转关于jsp的相关推荐

  1. java跳转_java servlet 几种页面跳转的方法

    Servlet: 当然,在servlet中,一般跳转都发生在doGet, doPost等方法里面. 1) redirect 方式 response.sendRedirect("/a.jsp& ...

  2. 微信小程序学习之五种页面跳转方法.

    第一种:<navigator></navigator>标签. 这是最常见的一种跳转方式,相当于html里的a标签.但需要注意的是 该方法不能跳转tabbar页面. 格式为: & ...

  3. kotlin和java语言_Kotlin VS Java – 2020年您应该学习哪种编程语言?

    kotlin和java语言 It has been several years since Kotlin came out, and it has been doing well. Since it ...

  4. java源代码实例倒计时_Java倒计时三种实现方式代码实例

    写完js倒计时,突然想用java实现倒计时,写了三种实现方式 一:设置时长的倒计时: 二:设置时间戳的倒计时: 三:使用java.util.Timer类实现的时间戳倒计时 代码如下: package ...

  5. java基础代码实例_java学习之web基础(3):Servlet 和 Request的登录处理实例

    在页面输入用户名和密码,进行权限判断. 登录成功跳转到SuccessServlet展示:登录成功!用户名,欢迎您: 登录失败跳转到FailServlet展示:登录失败,用户名或密码错误. 我们这里使用 ...

  6. java 如何级联删除_Java学习-040-级联删除目录中的文件、目录

    之前在写应用模块,进行单元测试编码的时候,居然脑洞大开居然创建了一个 N 层的目录,到后来删除测试结果目录的时候,才发现删除不了了,提示目录过长无法删除.网上找了一些方法,也找了一些粉碎机,都没能达到 ...

  7. java 遍历list 性能_java list三种遍历方法性能比較

    从c/c++语言转向java开发,学习java语言list遍历的三种方法,顺便測试各种遍历方法的性能,測试方法为在ArrayList中插入1千万条记录,然后遍历ArrayList,发现了一个奇怪的现象 ...

  8. java对象序列化作用_Java学习之——理解对象序列化

    Java的对象序列化就是把对象写入到输出流中,用来存储或传输:反序列化就是从输入流中读取对象.简单的来说是指将那些实现了Serializable接口的对象转换成一个字节序列,并能够在以后将这个字节序列 ...

  9. java商品展示页面代码_java学习(十四)实现商品的展示、curd以及分页展示

    本文主要完成使用jdbc完成购物网站中实现:展示所有商品.添加商品.删除商品.修改单个商品.删除多个商品.分页展示的功能实现. 1.展示所有商品 本章节主要实现点击首页上展示所有商品的超链接,实现在页 ...

最新文章

  1. Android软键盘调用及隐藏,以及获得点击软键盘输入的字母信息
  2. Mysql数据库的安装教程
  3. TextView之一:子类的常用属性
  4. 协方差矩阵, 相关系数矩阵
  5. python判断字符串在元祖_Python基础(2)——字典、元祖、字符串方法、非空即真、文件...
  6. JAVA进阶开发之(内部类概述)
  7. Navicat创建数据库表 、导入sql文件,生成表结构
  8. 编程语言_如何正确地学习编程语言
  9. 童装英文外贸网站系统源码 v1.5.5
  10. geoserver 报错 HTTP ERROR: 503
  11. JDK8新特性(二)之接口新增的两个方法
  12. git向远程推送代码提示fatal: Authentication failed
  13. 也用C#做个视频监控客户端来玩玩
  14. 九九乘法表之循环嵌套的奇妙
  15. 钟平老师的逻辑英语语法
  16. html炫酷文本框,炫酷的input框实现
  17. java毫秒数_Java中的毫秒数
  18. scrapy框架携带cookie访问淘宝购物车功能的实现代码!
  19. oracle设置查看格式,Oracle 设置显示格式
  20. 解决Win10系统激活office2019时出现 0xc004f074 无法激活问题,亲测可用!!!

热门文章

  1. 中国游戏行业观察报告
  2. 2015年《大数据》高被引论文Top10文章No.7——大数据机器学习系统研究进展(上)...
  3. 操作系统——实验贰——进程通信(一)管道及共享内存
  4. 【VB.NET】VB.NET窗体方法示例
  5. Hadoop 生态学习
  6. 关于libtorrent库的安装
  7. 初识MongoDB(四)
  8. 原来Java大数据才是真正的高富帅!
  9. Mac OS/Linux命令查询网络端口占用情况
  10. 总结几种常用的安全算法