前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jsp中转发(forward)、包含(include)及转向(redirect)的区别与联系

jsp中转发(forward)、包含(include)及转向(redirect)的区别与联系

作者头像
java达人
发布2018-01-31 10:53:48
9780
发布2018-01-31 10:53:48
举报
文章被收录于专栏:java达人java达人

一、forward、include由javax.servlet.RequestDispatcher来封装,由包容器container提供RequestDispatcher接口的实现,其中声明如下: void forward(ServletRequest req,ServletResponse res) void include(ServeltRequest req,ServletResponse res) 可以通过两种方式得到RequestDispatcher: 1、ServletContext.getRequestDispatcher(String path); 其中这里的path必须开始为”/”,即这里的path必须相对于context的root. 2、ServeltRequest.getRequestDispatcher(String path) 这里的path可以为相对路径,如果path开始为”/”,则也认为是从context的root开始的。 二、Redirect由HttpServletResponse.sendRedirect(String location)来支持 差别: 三个都可以对用户的request进行转发,但是还是有许多的不同,差别最主要集中在如下几个方面: 1、forward与include共亨Request范围内的对象,而redirect则不行,即:如果一个javabean被声明为request范围的话,则被forward到的资源也可以访问这个javabean,而redriect则不行。 2、forward与include基本上都是转发到context内部的资源,而redirect可以重定向到外部的资源,如: req.sendRedriect(“http://www.wenhq.com.cn”); 3、RequestDispatcher接口的include()方法与forward()方法非常类似,惟一的不同在于:利用include()方法将 HTTP请求转送给其他Servlet后,被调用的Servlet虽然可以处理这个HTTP请求,但是最后的主导权仍然是在原来的Servlet。换言之,被调用的Servlet如果产生任何HTTP回应,将会并入原来的HttpResponse对象。 调用forward()方法时必须注意下列两点: 1. 在HTTP回应被“确认”(committed)以前才能调用forward()方法(这里的“确认”是指将HTTP回应的内容主体送回用户端),否则将拋出IllegalStateException异常。 2. 调用forward()方法后,原先存放在HttpResponse对象中的内容将会自动被清除.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java达人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档