Servlet中转发和重定向的路径问题

开发 后端
本文向您介绍Servlet转发和Servlet重定向中的路径问题,Servlet 重定向的方法只有一种:HttpServletResponse的sendRedirect()方法。

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

Servlet 重定向的方法只有一种: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.xxx.com ")

容器直接定向到该URL。

◆HttpServletRequest.getRequestDispatcher(String)

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

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

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

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

◆ ServletContext.getRequestDispatcher(String)

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

 

【编辑推荐】

  1. JSP中JavaBean和Servlet理解
  2. Servlet 3.0规范最终建议草案发布
  3. Servlet的基础结构中的GET请求
  4. 浅析Servlet和Jsp中的多国语言显示
  5. 高性能、高弹性JSP和Servlet性能优化
责任编辑:佚名 来源: JavaEye
相关推荐

2009-06-30 15:37:27

Servlet和JSP

2021-03-28 08:32:58

Java

2010-12-14 15:07:15

ICMP路由重定向

2009-07-06 17:22:54

JSP服务器

2023-02-09 07:01:35

转发重定向Java

2010-07-13 14:10:44

ICMP协议

2022-07-18 07:11:35

请求转发请求重定数据共享

2022-11-10 15:08:44

Linux输入输出

2020-12-09 11:10:12

shellLinux管道

2020-02-24 11:37:56

Linux重定向管道

2010-04-30 09:53:34

Unix系统

2017-01-19 19:14:20

Linux重定向命令

2010-03-09 16:11:59

Linux重定向

2012-12-24 09:46:50

RDS打印重定向

2009-11-23 18:39:17

PHP重定向

2022-09-02 08:03:44

IO程序网卡

2009-07-03 11:21:43

Servlet和JSPJSP路径

2012-06-14 09:32:17

虚拟化

2017-12-06 10:15:27

跳转机制Chrome

2009-06-17 09:11:24

Unix管道重定向
点赞
收藏

51CTO技术栈公众号