• JSP中的两种重定向


    在web开发中,我们经常会遇到网页跳转,除了html的a标签、表单提交等跳转方法外,在一般的jsp开发中,这种网页跳转被称作重定向,此次主要记录jsp开发中的两种重定向方式

    |1. 利用response对象进行重定向,方法如下:

    response.sendRedirect(目标网页路径)
    

    目标网页路径既可以填相对路径,也可以填绝对路径(但是要填完整哦)

    |2. 使用jsp动作指令实现重定向,方法如下:

    <jsp:forward page="目标网页路径">
        //<jsp:param value="" name="">        可以对跳转到指定页面,并传值
    </jsp:forward>
    

    |3. 使用这两种方法跳转, 具有很大的不同, 主要有以下几个方面:

    |3.1 从浏览器的地址显示来看

    forward方法属于服务器端去请求资源,服务器直接访问目标地址,并对该地址的相应内容进行读取,再把读取的内容发给浏览器,因此客户端浏览器的地址不变。  
    redirect是告诉客户端,使浏览器知道去请求哪一个地址,相当于客户端重新请求一遍。所以地址显示栏会变。  
    简单来讲, 使用forward跳转某一页面,但地址栏不变仍是服务器地址,但使用redirect则是直接去访问某一页面地址,所以地址栏会变。 
    

    |3.2 从数据共享来看

    forward转发的页,以及转发到的目标页面能够共享request里面的数据,而redirect转发的页以及转发到的目标页面不能共享request里面的数据。  
    

    |3.3 从功能来看

    redirect能够重定向到当前应用程序的其它资源,而且还能够重定向到同一个站点的其他应用程序中的资源,甚至是使用绝对url重定向到其它站点的资源。比如,可以通过该方法跳转到百度页面。  
        <%
            response.sendRedirect("https://www.baidu.com");
        %>
    
    forward方法只能在同一个web应用程序内的资源之间转发请求,可以理解为服务器内部的一种操作。以下代码运行时会报错。  
        <jsp:forward page="https://baidu.com"></jsp:forward>            
    

    |3.4 从效率来看

    forward效率较高,因为跳转仅发生在服务器端。  
    redirect效率较低,因为类似于再进行了一次请求。
    *特别提醒*: response.sendError()也是进行跳转,他的作用是向客户端发送http状态码的出错信息。  
    常见错误代码如下:
         400  Bad Request, 请求出现语法错误
         401  Unauthorized, 客户试图未经授权访问受密码保护的页面
         403  Forbidden, 资源不可用
         404  Not Found, 无法找到指定位置的资源
         500  Internal Server Error, 服务器遇到了无法预料的情况,不能完成客户的请求。
    

    |4. 无论使用jsp动作指令或response的sendRedirect方法进行重定向,各有各的好处,请按需使用。

  • 相关阅读:
    UOJ#424. 【集训队作业2018】count
    框架的 总结(nop)------添加功能
    c# 调用分页(控制器端的)与时间的格式
    c# 通过关键字查询
    c#导入导出 插入数据到用户表(nop框)
    Nop权限的使用
    联合结果集的原则
    简单的结果集联合
    UNION ALL
    联合结果集
  • 原文地址:https://www.cnblogs.com/gaoliwei1102/p/12826855.html
Copyright © 2020-2023  润新知