我对java,jsf,jsp真的很陌生,我需要学习它如何快速工作。因此,我用来练习的网站上有一些术语,例如我不知道它们的含义,我希望有人可以解释它们的含义以及它们的用途/用途:)
Requestscoped
Applicationscoped
Sessionscoped
EntityManager
有人可以指导我完成这些工作吗?
@RequestScoped
public class Dao {
@DataRepository
@Inject
private EntityManager entityManager;
最佳答案
首先,在Java(5及更高版本)中,以@
(例如@Deprecated
)开头的“事物”称为annotations。
注释提供有关
程序不属于
程序本身。他们没有直接关系
对代码操作的影响
他们注释。
如果要在JSF中使用JavaBean,则需要将其配置为作用域(可以在here中找到定义)。@RequestScoped
:具有此范围的对象从请求开始到结束都可见
的请求。请求范围始于请求的开始,结束于请求的结束
响应已发送到客户端。如果转发了请求,则对象可见
在转发的页面中,因为该页面仍是同一请求/响应的一部分
周期。具有请求范围的对象可以使用没有对象,请求,会话,
或应用范围。如果您必须从servlet的角度考虑它,则将受管Bean存储在HttpServletRequest
中,直到请求结束(将响应发送到客户端)为止。此后,该bean在请求中不再存在。@SessionScoped
:具有会话范围的对象对于任何请求/响应周期可见
属于一个会话。具有此范围的对象的状态在
请求并持续到对象或会话失效为止。会话对象
作用域可以使用没有对象,会话或应用程序作用域的其他对象。基本上,这些对象存储在HttpSession
中(再次参考Servlet)。每个会话都有一个与该bean关联的会话ID(称为JSESSIONID
)。ApplicationScoped
:具有应用程序范围的对象在所有请求/响应周期中均可见
对于使用该应用程序的所有客户端,只要该应用程序处于活动状态即可。就Servlet而言,这可以是存储在ServletConfig
中的托管bean。@NoneScoped
:具有此范围的对象在任何JSF页面中都不可见。在配置文件中使用时,它们表示由应用程序中的其他托管Bean使用的托管Bean。没有作用域的对象可以使用没有作用域的其他对象。
对于EntityManager
,这与持久性上下文相关联。它用于创建和删除持久实体实例,通过其主键标识查找实体,以及查询所有实体。有关更多信息,请参考JPA(Java持久性API)规范或Hibernate。@Inject
,表示实例是可注入的。他们遵循臭名昭著的“依赖注入或控制反转”(IOC)一词。这基本上是指,当资源(在您的情况下需要EntityManager entityManager
时,JEE容器会为您实例化资源(不需要您通过例如构造函数等直接实例化)。
我不知道@DataRepository
是什么意思。以前没看过。
我希望这可以帮助你。