`
小哥1900
  • 浏览: 56488 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

(ZZ)JSP转发VS重定向

阅读更多
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()直接实

现重定位。



由于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).Request Dispatcher.forward()是容器中控制权的转向,在客户端浏览器地址栏中不会显示出

转向后的地址;
(2).response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链

接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。
前者更加高效,在前者可以满足需要时,尽量使用RequestDispatcher.forward()方法.

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

HttpServletResponse.sendRequest()方法。

3.<jsp:forward page="" />

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

的印记。


如果在<jsp:forward>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句

将不起作用,这一点应该特别注意。
另外要注意:它不能改变浏览器地址,刷新的话会导致重复提交

4.修改HTTP header的Location属性来重定向
    通过设置直接修改地址栏来实现页面的重定向。
jsp文件代码如下:

<%
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
String newLocn = "/newpath/jsa.jsp";
response.setHeader("Location",newLocn);
%>

5.JSP中实现在某页面停留若干秒后,自动重定向到另一页面
   在html文件中,下面的代码:
     <meta http-equiv="refresh" content="300; url=target.jsp">
     它的含义:在5分钟之后正在浏览的页面将会自动变为target.html这一页。代码中300为刷新的

延迟时间,以秒为单位。targer.html为你想转向的目标页,若为本页则为自动刷新本页。
     由上可知,可以通过setHeader来实现某页面停留若干秒后,自动重定向到另一页面。
     关键代码:
           String content=stayTime+";URL="+URL;
           response.setHeader("REFRESH",content);
分享到:
评论

相关推荐

    base zz zz zz zz

    base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz base zz zz zz zz zz

    ZZ561401.CAB

    ZZ561401.CAB ZZ561401.CAB ZZ561401.CAB

    wincc AX NF ZZ

    wincc SIMATIC WinCC是第一个使用最新的32位技术的过程监视系统,具有良好的开放性和灵活性。 从面市伊始,用户就对SIMATIC WinCC印象深刻。

    JSP编程技术(免積分)

    } catch (ArithmeticException zz) { throw new ArithmeticException("除数不能为零!"); } %&gt; ``` 在此案例中,当尝试执行除法运算且除数为零时,将抛出异常,并跳转到指定的错误处理页面`4-03.jsp`。 #### ...

    zz CAD快速计算长度插件

    在CAD中想要快速测量长度,在CAD工具栏找到加载应用程序,再点击加载 加载成功后在输入栏输入“zz”(不分大小写)在选择你需要测量的线段即可。

    超出NLO QCD的高横向动量的ZZ产生

    我们研究了四轻子最终状态ℓ+ℓ-ℓ+ℓ-的产生,这些状态主要由一对弱电Z玻色子ZZ产生。 使用LoopSim方法,我们合并ZZ和ZZ + jet的NLO QCD结果,并获得ZZ产生的近似NNLO预测。 还包括对ZZ过程的精确胶子融合环平方的...

    ZZ_MODIFIED_GEEBINF.ENS.zip endnote的样式文件

    标题中的“ZZ_MODIFIED_GEEBINF.ENS.zip”是一个压缩包文件,主要包含一个名为“ZZ_MODIFIED_GEEBINF.ENS”的文件。这个文件是一种特殊格式,用于定义EndNote的引用样式。EndNote是一款强大的文献管理软件,广泛应用...

    Zz归零.LSP

    cad标高归零,好用的

    Jsp Mysql 中文 Servlet错误捕捉 集成演示2.rar

    2. Servlet实现:包括Servlet的生命周期,如何重定向和转发请求,以及如何在Servlet中处理HTTP请求和响应。 3. 数据库连接与操作:展示如何使用JDBC建立与MySQL的连接,执行SQL语句,以及关闭数据库连接。 4. 错误...

    中医大夫助理信息系统 zz-doctor

    《中医大夫助理信息系统 zz-doctor 深度解析》 中医大夫助理信息系统“zz-doctor”是一款基于Android平台的应用程序,旨在为中医医生提供智能化、便捷化的诊疗辅助工具。通过深入剖析这款应用的源码,我们可以了解...

    3_Level_ZZ_Semafor.zip_3 level_zz_3_Level_ZZ_semafor_ZZ Semafor_

    ,主图指标,顶底信号,突破,转折信号,都很明显

    ZZ Fibo Trader - MetaTrader 5EA.zip

    《ZZ Fibo Trader - MetaTrader 5 EA 深度解析》 ZZ Fibo Trader 是一款专为 MetaTrader 5(MT5)平台设计的自动交易专家顾问(EA),其核心在于结合了斐波那契回调线分析和抛物线止损系统,为交易者提供了智能化的...

    zz809.com留言本

    《zz809.com留言本》是一款基于网络的互动交流平台,源于柏图留言本BTB 1.2版本,并经过管理员zz809的定制和优化。这个平台旨在为用户提供一个简便、实用的在线留言功能,使得用户可以方便地在网站上发表评论、交流...

    变形版SD ZZ高达 纸模型

    "变形版SD ZZ高达"是一款深受高达爱好者喜爱的纸模型,它源于日本著名的机器人动漫《机动战士Z高达》中的角色。SD(Super Deformed)是日本动漫中的一个术语,意为超级变形,通常指的是角色被夸张地简化和可爱化,...

    DT_ZZ_optimized - MetaTrader 4脚本.zip

    《DT_ZZ_optimized - MetaTrader 4脚本:深入解析与优化技术》 MetaTrader 4(MT4)是一款广泛应用于外汇、期货和股票交易的交易平台,它提供了丰富的技术分析工具和自动化交易功能。在MT4平台中,用户可以编写...

    ZZ18000/25.5/50型四柱支撑掩护式支架的研制与应用

    ZZ18000/25.5/50型四柱支撑掩护式支架是一款专为煤矿快速搬家和回撤巷道支护设计的高效设备。这款支架在煤炭开采中扮演着至关重要的角色,特别是在高产高效矿井中,其有效提升了综采设备的利用率和搬家倒面的速度。 ...

    TIA V16 AX NF ZZ.rar

    博途V16授权 博途V16授权 博途V16授权 博途V16授权 TIA V16 AX NF ZZ TIA V16 AX NF ZZ TIA V16 AX NF ZZ TIA V16 AX NF ZZ TIA V16 AX NF ZZ

    ZZ-2021030 网络搭建与应用赛项赛卷《网络环境》.pdf

    ZZ-2021030 网络搭建与应用赛项赛卷《网络环境》.pdf

    zz_layer.rar

    zz_layer.il是源代码,install.bat是安装的 使用举例:zz 1-3 4 126 127 层号定义,与PADS类似:1~120是etch ;SolderMask: 121(top) 128(bot) ;Silkscreen: 126(top) 129(bot) ;Assembly: 127(top) 130(bot) ;Paste...

    geebinf modified by zz.ens

    写中文文章,或者外文,参考文献格式。例如:[1] Niu M, Hu Y, Sun S, et al. A novel hybrid decomposition-ensemble model based on VMD and HGWO for container throughput forecasting[J]. Applied Mathematical...

Global site tag (gtag.js) - Google Analytics