servlets - 如何从 servlet 调用 EJB 3.1 非零参数构造函数?

标签 servlets constructor java-ee-6 ejb-3.1

我有一个 login.java servlet,正如其名称所示,它为我的 Web 应用程序提供登录功能。

我是一名新手,正在使用 EJB 3.1 和 EE 6。在我的 LoginBean.java EBJ 中,我有一个无参数构造函数和另一个具有一些参数(电子邮件、密码等)的构造函数。

在 servlet 代码中的某个时刻,我调用实例化我的 EJB:

@EJB LoginBean loginBean;

我想知道是否可以(以及如何)调用另一个构造函数而不是零参数构造函数。

非常感谢。 干杯。

最佳答案

你不想这样做。同一个 servlet 在所有用户之间共享,因此 EJB 也在所有用户之间共享。您不希望将用户特定的数据存储为 servlet 或 EJB 类的实例变量。它将在所有网页访问者之间共享。

而是将参数移至您在登录 servlet 的 doPost() 方法中调用的 EJB 方法。

User user = loginBean.login(username, password);

然后在成功时将其存储在 HTTP session 中

request.getSession().setAttribute("user", user);

以便您的网络应用程序的其余部分可以拦截此以确定用户是否登录。

if (request.getSession().getAttribute("user") != null) {
    // User is logged in.
} else {
    // User is not logged in.
}

关于servlets - 如何从 servlet 调用 EJB 3.1 非零参数构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5328674/

相关文章:

java - 如何将参数从表单发送到 Servlet(出生日期)(选择日、月、年、选项)Java

java - 无法连接到servlet中的mysql数据库

c++ - 从 C++ 异常的构造函数中抛出异常

java - 封装构造函数错误

java - 运行时的 JSR-299 (CDI) 配置

java - 将 EJB 注入(inject) Eclipselink SessionCustomizer 以提供 Oracle 模式名称

java - 用于防止滥用的 Servlet 过滤器? (DoS、垃圾邮件等)

java - 即使 XML 相同,jUnit 比较 XML 字符串也会失败

C、不使用malloc初始化结构体

java - JPA的内部运作