从登录参数创建用户对象

时间:2013-07-03 14:29:39

标签: java servlets jdbc

我正在尝试在用户登录后使用所有用户字段创建用户对象,以便我可以从用户的类中检索任何给定的属性。这是User类。

public class User  {

private String username;
private String password;
private String f_name;
private String l_name;
private String email;
private String dob;
private int user_id;

public User(){}

public User(String username, String password)
{
    this.username = username;
    this.password = password;
}

public User(String username, String password, String f_name, String l_name, String email, String dob, int user_id)
{
    this.f_name = f_name;
    this.l_name = l_name;
    this.username = username;
    this.password = password;
    this.email = email;
    this.dob = dob;
    this.user_id = user_id;
}

我有所有领域的getter和setter。所有用户字段也存储在Oracle数据库中。

在我的Java Servlet中,我有以下代码来创建User对象并设置会话属性:

HttpSession session = request.getSession();

String username = request.getParameter("username").toString();
String password = request.getParameter("password").toString();

User user1 = new User(username, password);

session.setAttribute("username", username);
session.setAttribute("password", password);

如何根据用户名和密码创建包含所有用户字段的用户对象?

3 个答案:

答案 0 :(得分:5)

你应该:

  • 使用User对象引用以及usernamepassword字段保存登录业务逻辑的类。
  • 如果用户经过身份验证和验证,则应返回包含所有数据的 User对象引用:f_namel_name,{ {1}} ...以及email除了username这应该是您应该保存为会话属性的对象
  • 如果用户提供了错误的凭据,则应显示错误消息。

基本代码示例:

password

答案 1 :(得分:0)

只需写下name =“”;或类似的构造函数中的所有字段。它会将所有这些字段创建为空字符串。

答案 2 :(得分:0)

这通常是数据库支持的用户名/密码身份验证的工作方式:

  1. 从用户那里获取用户名和密码。
  2. 使用用户名作为密钥从数据库加载用户记录。
  3. 将给定的密码与存储的密码进行比较。或者更好,哈希给定的密码并与存储的数据库哈希进行比较,因为不建议在数据库中以明文形式存储密码。
  4. 如果给定的密码(哈希)等于存储的密码(哈希),则允许用户继续前进。