【问题标题】:doGet Method of the Faces ServletFaces Servlet 的 doGet 方法
【发布时间】:2014-08-18 12:09:49
【问题描述】:

我正在使用 Apache Tomcat 7.0 Servlet 容器。我一直在尝试查看 JavaServer Faces 中的请求处理。我可以在 web.xml 中看到以下配置块:

  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>

我查看了 Faces Servlet 的源代码,但我没有在里面找到 doGet 方法。我认为 doGet 方法是处理 Java Servlet 中的HTTP GET 请求的主要方法之一。那么谁在 JSF 中准确处理传入的 GET 请求?我想看看那个方法。

【问题讨论】:

    标签: java jsf tomcat servlets


    【解决方案1】:

    FacesServlet 不扩展自包含 a.o 的 HttpServlet 类。 doGet()。它只是实现了Servlet 接口,它提供了基本的service() 方法。 Look here.

    JSF 旨在与 servlet 和 portlet 兼容。 Portlets 不使用HttpServlet,而是使用PortletServlet,它共享公共Servlet 接口。

    【讨论】:

    • 也就是说,当http请求到达服务器时,会调用service方法,不是吗?
    • 是的。你看过HttpServlet的源代码吗?检查何时准确地调用 doGet()。有关该部分的相关答案,另请参阅stackoverflow.com/questions/5370633/…
    • 是的,我愿意。该方法的核心似乎是启动 JSF 生命周期并使用 lifecycle.execute(context); lifecycle.render(context); 进一步呈现页面
    • 是的。不要忘记点击我的答案中的service()链接以获得明确的答案。
    • 我在init() 方法体内找到了lifecycle = lifecycleFactory.getLifecycle(lifecycleId);。请求处理完成后lifecycle对象是否被销毁?
    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 2012-07-16
    • 2012-11-12
    • 2015-06-02
    • 1970-01-01
    • 2012-01-31
    相关资源
    最近更新 更多