`

转发与重定向的路径问题(转)

    博客分类:
  • java
阅读更多


重定向是客户端跳转,转发是服务器端跳转

在servlet中调用转发、重定向的语句如下:
request.getRequestDispatcher("new.jsp").forward(request, response);//转发到new.jsp
response.sendRedirect("new.jsp");//重定向到new.jsp
在jsp页面中你也会看到通过下面的方式实现转发:
<jsp:forward page="new.jsp" />
当然也可以在jsp页面中实现重定向:
<%response.sendRedirect("new.jsp");//重定向到new.jsp%>

其实我认为jsp中的URL地址也是重定向,因为点击这个request作用域失效,要传递到信息到request必须要用参数才行。

总之JSP/Servlet都有转发和重定向的手段了,那么我总结一下路径问题。

Servlet中有两种方式获得转发对象(RequestDispatcher):一种是通过HttpServletRequest的 getRequestDispatcher()方法获得,一种是通过ServletContext的getRequestDispatcher()方法获得;

重定向的方法只有一种:HttpServletResponse的sendRedirect()方法。

这三个方法的参数都是一个URL形式的字符串,但在使用相对路径或绝对路径上有所区别。



★ HttpServletResponse.sendRedirect(String)

参数可以指定为相对路径、绝对路径或其它Web应用。

假设通过http://localhost/myApp/cool/bar.do请求到达该方法所属的Servlet。

相对路径:response.sendRedirect("foo/stuff.do")

容器相对于原来请求URL的目录加参数来生成完整的URL——http://localhost/myApp/cool/foo/stuff.do。

绝对路径:response.sendRedirect("/foo/stuff.do")

容器相对于Web应用本身加参数建立完整的URL——http://localhost/foo/stuff.do。

其它Web应用:response.sendRedirect("http://www.iteye.com")

容器直接定向到该URL。



★ HttpServletRequest.getRequestDispatcher(String)

参数可以指定为相对路径或绝对路径。

相对路径情况下生成的完整URL与重定向方法相同。

绝对路径与重定向不同,容器将相对于Web应用的根目录加参数生成完整的URL,即:

request.getRequestDispatcher("/foo/stuff.do")生成的URL是http://localhost/myApp/foo/stuff.do。



★ ServletContext.getRequestDispatcher(String)

参数只能指定为绝对路径,生成的完整URL与HttpServletRequest.getRequestDispatcher(String)相同。
分享到:
评论

相关推荐

    转发与重定向的区别

    ### 转发与重定向的区别 在Web开发中,转发(Forward)和重定向(Redirect)是两种常见的页面跳转方式。这两种方法虽然都能实现页面的跳转,但其内部工作原理、对客户端的影响以及应用场景都有所不同。本文将详细...

    转发和重定向的区别

    在Web开发中,"转发"(Forward)和"重定向"(Redirect)是两种常见的页面跳转方式,它们虽然在效果上看似相似,但其实有着本质的区别。理解这两种技术的工作原理及其应用场景对于优化应用程序的性能和用户体验至关...

    请求转发与重定向详解代码

    请求转发与重定向有以下显著区别: 1. **客户端行为**:请求转发对客户端透明,客户端并不知道请求被转发了;而重定向则是客户端收到服务器的响应后,自己发起新的请求。 2. **URL显示**:转发后,浏览器地址栏的...

    页面转向与重定向

    页面转向与重定向 页面转向与重定向是 Web 开发中两个非常重要的概念,它们都是用于在不同的 Web 资源之间进行跳转的,但是它们之间有着很大的区别。下面我们将详细介绍转发和重定向的概念、调用方式、工作流程和...

    转发与重定向的详细说明

    ### 转发与重定向的详细说明 #### 一、转发 转发是Web应用程序中常见的一种机制,它主要用于在同一个Web应用内部的不同组件间共享请求数据。在Servlet和JSP技术中,转发是一个非常重要的概念,对于实现复杂的业务...

    重定向和转发的区别

    ### 重定向与转发的区别 在Web开发中,经常需要用到重定向(Redirect)与转发(Forward)这两种控制页面跳转的技术。尽管它们都能实现页面之间的跳转,但在具体的应用场景和技术实现上却有着本质的不同。下面将从多...

    转发和重定向的区别 forward和redirect的区别

    - 重定向路径必须是绝对路径,且通常以HTTP或HTTPS协议开头,包括主机名和端口号。 - 由于是新的请求,原来的请求参数和对象无法直接传递。不过,可以通过在重定向URL中添加查询字符串来传递部分信息。 - 示例...

    请求转发和重定向的区别共1页.pdf.zip

    本篇文章将详细解析请求转发与重定向的区别。 一、请求转发(Request Forwarding) 1. 定义:请求转发是在服务器端完成的内部操作,它不涉及客户端浏览器的任何更改。当服务器接收到一个请求后,可以决定将该请求...

    (代码)SpringMVC第6讲:请求转发和重定向

    在Spring MVC框架中,请求转发和重定向是两种常见的页面跳转方式,它们在处理用户请求和构建应用程序的流程控制中扮演着重要角色。本文将深入探讨这两种技术,并结合实际的代码示例来阐述其工作原理和使用场景。 ...

    基于框架的Web开发-处理数据模型、转发和重定向.docx

    它允许我们将HTTP请求路径与特定的方法关联起来,并可以将请求参数绑定到方法参数上。例如,`@RequestMapping(path="/detail/{userName}")`将匹配以`/detail/`开头并带有路径变量`{userName}`的URL请求,`@...

    Javaweb请求转发及重定向实现详解

    三、请求转发与重定向的区别 请求转发和重定向都是实现页面跳转的机制,但是它们有着不同的实现机制和应用场景。 请求转发: * 请求地址不会发生改变 * 在同一个Controller中实现 * 使用forward关键字 重定向: ...

    Java路径问题

    页面中的超链接和表单提交路径与重定向路径类似,都是客户端路径,需要包含项目名。比如`&lt;form action="/Example/AServlet"&gt;&lt;/form&gt;`和`&lt;a href="/Example/AServlet"&gt;&lt;/a&gt;`。如果没有项目名或者没有以"/"开头,路径...

    详解spring mvc 请求转发和重定向

    3. 转发的URL路径是相对当前Web应用程序的根目录,如果以"/"开头,它仍然在当前应用内。 相比之下,请求重定向(Redirecting)则是通过`HttpServletResponse.sendRedirect()`方法完成的。重定向涉及到两次HTTP请求...

    ICMP重定向介绍,ICMP重定向介绍

    导致原本通过广域网转发的数据包需改道至RT2的以太网接口,此时,RT1将向Host1发送ICMP重定向报文,指示Host1更新路由表,直接向RT2发送数据包至目的地址10.0.0.1/8,下一跳地址为1.1.1.3,优化Host1与Intranet内的...

    phpweb网址转发不能包含相对路径符号解决办法

    然而,在实现这个功能时,有时会遇到一个问题:转发的URL不能包含相对路径符号,这可能导致页面加载错误或者重定向失效。本文将深入探讨这个问题,并提供解决方案。 首先,我们需要理解URL转发的基本原理。URL转发...

    nginx目录路径重定向的方法

    如果希望域名后边跟随的路径指向本地磁盘的其他目录,而不是默认的web目录时,需要设置nginx目录访问重定向. 应用场景:dashidan.com/image自动跳转到dashidan.com/folderName/image.nginx目录路径重定向的四种实现方式...

    java Web 中相对路径绝对路径问题总结

    以下是对Java Web中相对路径与绝对路径问题的深入总结: ### 一、路径概念与标准 #### 1. URL与URI URL(Uniform Resource Locator)统一资源定位符,是一种用于标识网络上资源位置的标准格式,如`...

    重定向OWA URL

    勾选“输入的URL下的目录”以确保请求被正确转发,并在应用程序池中选择“MSExchangeOWAAppPool”。这是OWA应用运行的地方,确保选择正确才能使重定向生效。 2. **从HTTP到HTTPS的重定向** 为了提高安全性,通常会...

    Springmvc中的转发重定向和拦截器的示例

    Springmvc中的转发重定向和拦截器的示例 Springmvc 中的转发和重定向是两种不同的处理请求的方式。转发是指在控制器内部处理请求的方法中,默认返回字符串时的处理方式,即返回的字符串是 view 组件的名称,例如 ...

Global site tag (gtag.js) - Google Analytics