博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
servlet之控制分发
阅读量:6581 次
发布时间:2019-06-24

本文共 1250 字,大约阅读时间需要 4 分钟。

hot3.png

一:servlet的控制分发主要由RequestDispatcher对象完成(由于整个servlet存在于web容器中,所以它不像spring那样要指定一个控制分发器,它已经内置在web容器里面)。获取RequestDispatcher主要有两种方式,他们都是在ServletContext定义的接口之下

1.public RequestDispatcher getRequestDispatcher(String path)

path是资源的绝对路径,应该以"/"开始

2.public RequestDispatcher getRequestDispatcher(String name)

name是在web.xml中注册的servlet所对应的名字

二:完成请求分发主要有两个方法

1.public void include(request,response);

改方法的可以使其他资源生成的任务动静态的内容包含在它生成的响应中

eg:ServletContext context = getServletContext();

  RequestDispatcher rd = context.getRequestDispatcher("HeaderServlet");//HeaderServlet包含了头部的输出流

  rd.include(res,rps);

  rps.getWriter.println("<FONT SIZE=*******");

  rd = context.getRequestDispatcher("/foot.html");

  rd.include(res.rps);

  这样就完成了一次各个组件的共同输出流到客户端

 

2.public void forward(request,response);

改方法使Servlet将请求转发给另一个Servlet或者任何其他的Web组件,然后该Servlet或者其他组件将负责进一步处理该请求并生成响应

eg:  RequestDispatcher rd = null;

    if(valid){

      rd = context.getRequestDispatcher("InboxServlet");

    }else{

      rd = context.getRequestDispatcher("error.jsp");

    }

    rd.forward(res,rps);

下面看看两个方法的对比:

forward方法 include方法
在控制必须转移到其他web组件时使用

在必须由另一个web组件执行部分处理时使用。一旦

处理完成,当前的web组件就收回控制权

在转发请求之前,转发请求的web组件不应

使用用于与客户通信的输出流

所有web组件共享该输出流来与客户端进行通信

 

 

转载于:https://my.oschina.net/secyaher/blog/274429

你可能感兴趣的文章
js -- canvas img 封装
查看>>
转 我们工作的动力是什么 工作最终是为了什么?
查看>>
测试一个网站的最大并发量并发数并发用户
查看>>
适配器模式(数据库方面)支持不同的数据库连接
查看>>
CF456B Fedya and Maths 找规律
查看>>
nodejs安装及windows环境配置
查看>>
转载:Beginning WF 4.0翻译——第三章(流程图工作流)
查看>>
mysql alter table
查看>>
芯片测试
查看>>
在源代码中插入防止盗版代码片段的方式
查看>>
hdu 3367 Pseudoforest(最大生成树)
查看>>
一个人,一则故事,一份情愫,一个世界……
查看>>
ffserver联合ffmpeg建立媒体服务器
查看>>
下载稻草人下来刷新+gallery
查看>>
删除浏览器浏览器删除cookie方法
查看>>
微软URLRewriter.dll的url重写的简单使用(实现伪静态)
查看>>
leetcode -- Combination Sum II
查看>>
1z0-052 q209_7
查看>>
PIN码计算锦集
查看>>
[Unity3D]再次点击以退出程序
查看>>