Java Web应用程序会话变量

华龙

一旦当前用户登录,如何将当前用户的信息存储在会话变量中?登录后,需要在整个Web应用程序中访问此数据。

这是我到目前为止所拥有的:

User.java

@Named
@Table
@Entity
@SessionScoped
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name = "id")
    private long id;

    @Column(name = "firstname")
    private String firstname;

    @Column(name = "lastname")
    private String lastname;

    @Column(name="username")
    private String username;

    @Column(name = "password")
    private String password;

    public User() {}
...

UserData.java

@Named
@RequestScoped
public class UserData implements Serializable {

    private static final long serialVersionUID = 1L;
    SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
    Session session = null;
    Transaction tx = null;
    List<User> users;
    String username;
    String password;

    public String getUsername() {
        return username;
    }
    public String getPassword() {
        return password;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public void setPassword(String password) {
        this.password = password;
    }

    public UserData() {
        try {
            this.session = sessionFactory.openSession();
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }

public void login() {
    System.out.println("Authorize: Username: " + this.username + " Password: " + this.password);

    Query query = session.createQuery("from User U where U.username = :username and U.password = :password");
    query.setParameter("username", this.username);
    query.setParameter("password", this.password);
    System.out.println(query.list());
}

返回了正确的用户对象,但是我不知道如何在用户的会话数据中保存用户对象。

我正在使用的技术(以防万一):

  • 冬眠
  • 的MySQL
  • JPA
  • JSF
  • 野蝇
帕特里克

由于您的User类是由@Named注释管理的,因此只需将当前实例注入您要使用的类中,就可以访问当前用户:

@Inject
private User user;

另一种解决方案是使用如下代码:

FacesContext context = FacesContext.getCurrentInstance();
User user = context.getApplication().evaluateExpressionGet(context, "#{user}", User.class);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

会话变量存储在Java Web应用程序中的位置

来自分类Dev

在Web应用程序Java中存储静态实例变量

来自分类Dev

在Web应用程序Java中存储静态实例变量

来自分类Dev

Java Web应用程序中会话cookie的安全标志

来自分类Dev

以编程方式使Java Web应用程序重新启动时的所有会话失效

来自分类Dev

随着并行会话数量的增加,如何扩展基于 Java 的 Web 应用程序?

来自分类Dev

Java Web应用程序是否仅包含一个休眠会话,并且如何清除该休眠会话?

来自分类Dev

Java客户端应用程序会话恢复

来自分类Dev

Web应用程序中的Java同步

来自分类Dev

Java Web应用程序中的并发

来自分类Dev

Web中的Java Swing应用程序

来自分类Dev

Java Web应用程序前端

来自分类Dev

Java Web应用程序的耙路?

来自分类Dev

基本Java EE Web应用程序

来自分类Dev

使用Java的Web应用程序

来自分类Dev

Web应用程序中的Java同步

来自分类Dev

Java Web应用程序流程

来自分类Dev

Java项目(Web应用程序)

来自分类Dev

保护 Java Web 应用程序

来自分类Dev

会话超时后如何在Java Web应用程序中的服务器上自动注销

来自分类Dev

Java / Selenium 应用程序 - 如何获取被测应用程序的会话 ID?

来自分类Dev

MVC在Java Web应用程序中的应用

来自分类Dev

在Amazon Web Services上部署Java Web应用程序

来自分类Dev

Java / MySQL调度程序,Web应用程序和独立应用程序的提醒

来自分类Dev

Java Web从Java应用程序启动Eclipse

来自分类Dev

Java Web从Java应用程序启动Eclipse

来自分类Dev

Java - 从 Spring Boot 应用程序获取变量

来自分类Dev

JNI - Java 应用程序的 C++ 变量值

来自分类Dev

从Java Web应用程序控制C应用程序

Related 相关文章

热门标签

归档