Request

来源:互联网 发布:中国古代数学 知乎 编辑:程序博客网 时间:2024/06/06 19:44

Request

请求转发和请求包含、演示请求转发

请求转发和请求包含

Created with Raphaël 2.1.0客户端客户端AServletAServletBServletBServlet1.发出请求AServlet2.ASeervlet请求转发或包含Bservlet3.执行结束4.最终响应

RequestDispatcher rd=request.getrequestDispatcher("/MyServlet");
使用request获取RequestDispatcher对象,方法的参数是被转发或包换的servlet

  • 请求转发:×××××rd.forward(request,response);
  • 请求包含:rd.include(request,response);

有时一个请求需要多个Servlet协作才能完成,所以需要在一个Servet跳转到另一个Servlet

  • 一个请求跨多个Servlet,需要使用请求转发和包含
  • 请求转发:由下一个Servlet完成响应体!当前Servlet可以设置响应头(留头不留体)
  • 请求包含:由两个Servlet共同完成响应体(留头又留体)
  • 无论是请求转发还是请求包含,都在一个请求范围内!使用同一个request和response!

request域

Servlet 中三大域对象:

  • Request
  • Session
  • Application
    -都有如下方法
    • void setAttribute(String name ,object value);
    • Object getAttribute(String name );
    • void removeAttribute(String name)
    • 同一请求范围内使用request.setAttribute() request.getAttribute()来传值! 前一个Servlet调用setAttribute()保存值,后一个Servlet调用getAttribute()获取值

请求转发和重定向的区别

  • 请求转发是一个请求一次响应,而重定向是两次请求两次响应
  • 请求转发地址栏不i变化,而重定向会显示后一个请求地址
  • 请求转发只能转发到本项目的其他Servlet,而重定向不只能定向到本项目的其他Servlet,还能定向到其他项目
  • 请求转发是服务器的行为,只需给出转发的Servlet路劲,而重定向需要给出requestURI,即包含项目名
  • 请求转发和重定向效率高的是转发,因为是一个请求!
    • 需要地址栏发生变化,那么必须使用重定向!
    • 需要在下一个Servlet中获取request域中的数据,必须用转发(或包含)

原创粉丝点击