当前位置: 首页 > 面试题库 >

托管bean和会话bean之间的区别

杜河
2023-03-14
问题内容

假设我有一个实体类,汽车。

@Entity
public class Car

我的IDE使我可以从实体类自动生成会话bean,因此最终得到了CarFacade

@Stateless
public class CarFacade

我也可以生成JSF托管bean

@ManagedBean     
@RequestScoped
public class RegistrationController

我可以理解Entity类和其他Bean之间的有意义的区别,但是无状态会话Bean和托管Bean之间有什么区别?我读到无状态会话Bean用于实现在实体上运行的业务逻辑,而托管Bean用于通过在托管Bean上使用网页调用方法并进行托管Bean调用来与基于Web的前端进行交互。会话Bean上的业务方法。

因此,在我的示例中,RegistrationController将具有网页将调用的+ register(String
carRegistration)方法。RegistrationController会依次实例化Car并在会话bean上调用+ create(Car
car),它将保留它。

这样对吗?


问题答案:

JSF受管Bean是实体(模型),JSF页面(视图)和企业Bean(业务服务)之间的粘合剂(控制器)。

因此,是的,您基本上理解正确,JSF页面应该调用托管bean的action方法,该方法进而将模型和操作委托给业务服务,并最终根据服务结果处理导航结果。呼叫。

但是在如何使用和传递模型方面您并不完全正确。通常,您将模型设为托管bean的属性,以便可以将其绑定到表单的输入元素,最后将其原样传递给业务服务。

例如

<h:inputText value="#{registrationController.car.make}" />
<h:inputText value="#{registrationController.car.model}" />
<h:inputText value="#{registrationController.car.year}" />
<h:commandButton value="Save" action="#{registrationController.save}" />

private Car car;
private @EJB CarFacade carFacade;

public RegistrationController() {
    this.car = new Car();
}

public String save() {
    carFacade.create(car);
    return "someoutcome";
}

// ...


 类似资料:
  • 问题内容: 这是我的工作方式 然后在 假设用户名是。然后,如果单击,将设置为Peter的用户对象,然后重定向到配置文件页面,该页面现在从中呈现信息。我只想使用创建相同的效果,因此想到了GET请求。所以我这样做 然后该方法就返回 剩下的就是创建一个servlet,捕获该,查询数据库以获取设置为重定向的对象。这是我的servlet 现在我有了,如何访问会话bean来查询数据库中的,然后访问受管Bean

  • 我在解决如何正确处理JSF中会话的自动销毁方面遇到了困难。当然,此时,容器会使会话失效,从而也会在会话范围的bean上调用@PreDestroy方法。 在某些会话范围bean的预销毁中,我们正在注销一些侦听器,如下所示: 然而,getWS()方法实际上试图获取对另一个会话范围bean的引用,但失败了,如返回null。Ryan Lubke认为,后者似乎是正常的JSF行为: 我们遵守这里的规范。我不确

  • 我知道无状态会话bean指的是EJB bean,而请求范围bean指的是CDI bean(或JSF托管bean),所以我将从Java EE教程中给出它们的两个定义开始。 无状态会话bean定义: 无状态会话bean不维护与客户端的会话状态。当客户机调用无状态bean的方法时,该bean的实例变量可能包含特定于该客户机的状态,但仅限于调用期间。当方法完成时,客户端特定状态不应保留。 用户在单个HTT

  • 问题内容: 为什么在这种情况下不能使用? 但可以使用 生成同一事物的两种方式不是吗? 问题答案: 并做两件事。此处的其他答案将更详细地解释,但更为简单: 告诉Spring’这是此类的一个实例,请保留该类,并在我询问时将其还给我’。 说“请给我一个该类的实例,例如,我@Bean之前用注释创建的一个实例”。 那有意义吗?在第一个示例中,你要让Spring给你一个的实例,但是你从未创建一个实例,因此Sp

  • 主要内容:使用XML配置,使用@ManagedBean注解JSF 托管bean(Managed Bean)是JSF注册的常规Java Bean类。托管bean包含getter和setter方法,业务逻辑。JSF托管bean作为UI组件的Model。 它存储JSF xhtml页面使用的数据。借助JSF框架,可以从JSF页面访问托管Bean。 在JSF 1.2中,我们必须在JSF配置文件(如)中注册受管理的bean。 从JSF 2.0可以使用注解注册管理be

  • 问题内容: 它们是不同的还是可以互换使用?如果它们不同,那么是什么使它们彼此不同? 问题答案: JavaBean只是一个普通的旧Java对象,它遵循某些约定,包括使用访问器函数(getFoo / setFoo)进行成员访问,提供默认构造函数以及类似的一些其他事情。 Enterprise JavaBean是Java EE应用程序服务器中的一个组件,它具有多种风味,具体细节因您所谈论的Java EE版