Я пытаюсь отобразить разные пункты меню в зависимости от типа пользователя и от того, вошли они в систему или нет. В моем проекте есть два типа пользователей: «Общий пользователь», обозначенный («gen») и «Администратор» («Admin). Я использую Netbeans 8.2 в качестве своей IDE. Если никто не вошел в систему, я просто хочу отобразить« войти » Если обычный пользователь вошел в систему, я хочу отобразить «Добро пожаловать», а если администратор вошел в систему, я хочу отобразить «Администратор». Проблема, с которой я сталкиваюсь, заключается в том, что при входе в систему в качестве обычного пользователя он показывает их пункт 'admin'menu вместо того, чтобы говорить приветствовать пользователя. Код домашней страницы
<% User user = (User) session.getAttribute("user");
if (user == null) {
%>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="usersignin.jsp">Log in</a>
</li>
<!-- if the user is a general user show them a welcome menu item-->
<% } else if (user != null && user.usertype == ("gen")) {
%>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="useraccount.jsp">Welcome ${user.username} </a>
</li>
<!-- If the user is an admin give them the Admin menu Item -->
<% } else {
%>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="admin.jsp">Admin</a>
</li>
<% }%>.
Код UserLoginServlet
public UserLoginServlet() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
UserDAO userDao = new UserDAO();
try {
User user = userDao.checkLogin(username, password);
String destPage = "usersignin.jsp";
if (user != null) {
HttpSession session = request.getSession(true);
session.setAttribute("user", user);
destPage = "rrrhome.jsp";
} else {
if (user == null) {
request.setAttribute("errorMessage", "Incorrect Login Credentials");
/* END */
}
}
RequestDispatcher dispatcher = request.getRequestDispatcher(destPage);
dispatcher.forward(request, response);
} catch (SQLException | ClassNotFoundException ex) {
throw new ServletException(ex);
}
}
}
````
**UserDAO Code**
````
public class UserDAO {
public User checkLogin(String username, String password) throws SQLException,
ClassNotFoundException {
String jdbcURL = "jdbc:mysql://localhost:xxxx/xxx";
String dbUser = "x";
String dbPassword = "x";
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection(jdbcURL, dbUser, dbPassword);
String sql = "SELECT * FROM users WHERE username = ? and password = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, username);
statement.setString(2, password);
ResultSet result = statement.executeQuery();
User user = null;
if (result.next()) {
user = new User();
user.setUsername(result.getString("username"));
}
connection.close();
return user;
}
}
Пользователь. java Код
private int userid;
public String username;
public String password;
public String usertype;
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
}
/**
* @return the userid
*/
public int getUserid() {
return userid;
}
/**
* @param userid the userid to set
*/
public void setUserid(int userid) {
this.userid = userid;
}
/**
* @return the username
*/
public String getUsername() {
return username;
}
/**
* @param username the username to set
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return the usertype
*/
public String getUsertype() {
return usertype;
}
/**
* @param usertype the usertype to set
*/
public void setUsertype(String usertype) {
this.usertype = usertype;
}
Наконец, моя таблица БД называется «пользователи» и содержит следующие столбцы:
имя пользователя (PK) имя, фамилия, адрес электронной почты, номер телефона, имя пользователя, пароль, адрес, тип пользователя.
Спасибо.