JSF 托管 bean 如何比普通 Java Servlet 更有益

How JSF managed bean can be more beneficial than normal Java Servelet

在javaee 7中推荐使用jsf作为默认的展示技术。正如他们所说,JSP 已被弃用。

因此,从 jsf 开始,我发现它使用可以处理事件并向视图提供数据的 managedbean。它还管理页面流。

所以我的问题是:

  1. 在javaee中真的推荐使用jsf模型而不是servlet有什么用?

根据我的理解,managedbean 在某种程度上扩展了 servlet 的能力。

  1. 如果我想在基于 jsf 的应用程序中使用 servlet,我该怎么做?

我可以在 JSF 托管 bean 中使用请求和响应对象吗? 我想像 Servlet 一样根据请求和响应周期手动发送响应。

是的,Java EE 从特定的专用 类 开始。直到后来才出现了使用注解的 POJO 趋势。 Servlets 形成了最早的 Java EE 技术,但它们仍然非常相关。另外 JSF 需要一个 servlet 容器,提供 servlet 相关 类,但 JSF 的耦合度较低,并且有传统 web 应用程序之外的用途。

  1. MVC模型:模型用bean,视图用JSF,控制器用servlet。准备数据(bean)后,servlet 可能 forward 到某些 apt view/JSF。对于特殊用例,servlet 可能更适合或至少更直接、PDF 生成、图表。不要忘记 servlet 过滤器.

  2. 让URL映射到一个servlet上。可能会使用注释。准备bean,你可以在任何范围内设置和保存它,请求范围是最轻和单向的。然后转发:

    request.getRequestDispatcher("/contact.jsf")
        .forward(request, response);
    

    或来自 ServletContext:

    context.getRequestDispatcher("/context/contact.jsf")
        .forward(request, response);
    

由于网络应用程序有很多技术,您找到了一个很好的起点;尝试其他框架也可能令人耳目一新。