servlet之控制分发

一: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://www.cnblogs.com/xiezichang/p/3730376.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值