Servlet RequestDispatcher #include和pathInfo

时间:2010-11-02 06:09:57

标签: java servlets

我想将另一个servlet的输出包含在当前响应中。

我可以打电话

request.getRequestDispatcher("/new/url").include(request, response);

它确实转到了正确的servlet,但是request.getPathInfo()request.getServletPath()和朋友没有设置为新的URL(它们仍然具有旧值),因此servlet不起作用。

那应该是那样的吗?我能做些什么来使这项工作?

1 个答案:

答案 0 :(得分:4)

是的,它应该是那样的(来自javadoc,注意Adeel Ansari引用forward()方法的javadoc而不是include()):

  

ServletResponse对象的路径元素和参数与调用者保持不变。

但是,包含的servlet可以使用以下名称访问自己的路径信息作为请求属性:

  

javax.servlet.include.request_uri
  javax.servlet.include.context_path
  javax.servlet.include.servlet_path
  javax.servlet.include.path_info
  javax.servlet.include.query_string