前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >servlet请求转发、包含以及重定向

servlet请求转发、包含以及重定向

作者头像
欠扁的小篮子
发布2018-04-11 11:12:50
1.1K0
发布2018-04-11 11:12:50
举报
文章被收录于专栏:技术碎碎念技术碎碎念

请求转发:

方式一:

  ServletContext对象.getRequestDispatcher(目标资源的URI).forward(request,response);

  目标资源的URI "/servlet/GetParam" 必须以"/"开头,否则报错,此"/"就表示的是当前应用(绝对路径表示法)

方式二:

  request.getRequestDispatcher(目标资源的URI).forward(request,response);

  目标资源的URI "/servlet/GetParam" 如果以"/"开头,就表示的是当前应用(绝对路径表示法)。

  GetParam" 如果不以"/"开头,就表示相对路径。相对路径:两个绝对路径去掉前面相同的部分

由源组件转发到目标组件时,容器会清空源组件输出的数据。响应头信息是不清空的,客户端地址栏URL不变

编码原则:不要在转发前后向页面输出数据,也不要关闭输出流。

代码语言:javascript
复制
1     public void forward(HttpServletRequest request,
2             HttpServletResponse response) throws ServletException, IOException {
3 //        方式一
4 //        RequestDispatcher rd=getServletContext().getRequestDispatcher("/servlet/NewPage");
5 //        方式二
6         RequestDispatcher rd=request.getRequestDispatcher("NewPage");
7         
8         rd.forward(request, response);
9     }

包含(动态包含):

request.getRequestDispatcher(目标资源的URI).include(request,response);

由源组件包含到目标组件时,容器会清空目标组件的头,所以源组件设置的头才有效。响应体信息是不清空的。

编码原则:不要在目标组件中设置响应头。

代码语言:javascript
复制
1     public void include(HttpServletRequest request,
2             HttpServletResponse response) throws ServletException, IOException{
3         RequestDispatcher rd=request.getRequestDispatcher("/servlet/NewPage");
4         rd.include(request, response);
5     }

重定向:

response.sendRedirect("/../...")

目标资源的URI /应用名/路径.. 绝对路径,"/"后跟应用名

客户端跳转,request中数据不传递!客户端地址栏URL改变。

代码语言:javascript
复制
1     public void redirect(HttpServletRequest request,
2             HttpServletResponse response) throws IOException{
3         response.sendRedirect("/WebProjectName/newURL");
4     }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-08-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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