Я в настоящее время объект пользователя:Получение сеанса суб-атрибуты из объекта
public class User {
public final String username, password, email;
public final double balance;
public User(String username, String password, String email, double balance) {
this.username = username;
this.password = password;
this.email = email;
this.balance = balance;
}
и функция входа в систему, которая возвращает объект пользователя:
public User checkLogin(String usrname, String pssword) {
Front fr = new Front();
User newUser = null;
try {
int count = 0;
Class.forName("com.mysql.jdbc.Driver");
Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/projects", "william", "william");
java.sql.Statement mySt = myConn.createStatement();
String rs = "SELECT username, password, email, balance FROM user WHERE username='" + usrname + "'AND password='" + pssword + "'";
System.out.println(rs);
ResultSet myRS = mySt.executeQuery(rs);
while (myRS.next()) {
newUser = new User(myRS.getString("username"),myRS.getString("password"),myRS.getString("email"),myRS.getDouble("balance"));
count++;
}
if (count == 0) {
return newUser;
}
if (count == 1) {
return newUser;
}
myConn.close();
} catch (SQLException | HeadlessException ex) {
JOptionPane.showMessageDialog(null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(DBHandler.class.getName()).log(Level.SEVERE, null, ex);
}
return newUser;
}
И наконец, сервлет, который обрабатывает формы и устанавливает разные атрибуты:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
Double balance = 0.00;
String origin = request.getParameter("origin");
String username = request.getParameter("username");
String password = request.getParameter("password");
String email = request.getParameter("email");
switch(origin){
case "login":
db.checkLogin(username, password);
User tempUser;
if((tempUser = db.checkLogin(username, password)) != null){
out.print("You will be redirected");
request.getSession().setAttribute("user", tempUser);
response.sendRedirect("index.jsp");
}else if(db.checkLogin(username,password) == null){
out.print("Wrong login info, please try again!");
response.sendRedirect("login.jsp");
}
break;
case "register":
db.registerUser(username, password, balance, email);
response.sendRedirect("login.jsp");
break;
}
}
То, что я пытаюсь сделать, это, например, отображение на веб-странице, одно из значений, которые пользователь имеет (имя пользователя, адрес электронной почты и т. Д.). Тем не менее, я не уверен, как использовать session.getAttribute, и как я могу получить tempUser.username.
Заранее спасибо.
Брат .... Я не могу вас отблагодарить. Серьезно отличная работа. Мне удалось исправить это, сделав это, благодаря вам: Пользователь tempUser = (Пользователь) session.getAttribute («пользователь»); out.print (tempUser.username); Снова, большое спасибо, брат. –
Хорошо, отлично. Попробуйте использовать EL, поскольку он широко используется в настоящее время через несколько дней, и, если возможно, попробуйте переключиться на Restful webservices –
@WilliamPfaffe, существует потенциальная угроза безопасности с классом User, если он хранится в сеансе. После заполнения пароль всегда будет доступен. Как только пользователь выполнил вход в пароль, больше не требуется. Рассмотрите возможность удаления атрибута пароля из класса User или по крайней мере null после того, как пользователь выполнил вход. –