我是java的初学者,我正在练习基本的java web。在这个例子中,我无法使用其他用户名登录,只有“admin”的用户名是accept。错误在哪里?
//admin.jsp
<%
MemberDAO member = new MemberDAO();
%>
<h1>Welcome ${member.getUsername()} to the system</h1>
<a href="ControllerServlet?action=logout">Log out</a>
//login.jsp
<form action="ControllerServlet" method="post">
<input type="hidden" value="login" name="action"/>
Username:
<input type="text" name="username" placeholder="Username"/>
<input type="submit" value="login"/>
</form>
// ControllerServlet.java
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
RequestDispatcher dispatcher = null;
if (action == null || action.equals("logout")){
dispatcher = request.getRequestDispatcher("login.jsp");
}
else if(action.equals("login")){
MemberDAO dao = new MemberDAO();
String username = request.getParameter("username");
if(dao.checklogin(username)){
dispatcher = request.getRequestDispatcher("admin.jsp");
}
else{
dispatcher = request.getRequestDispatcher("login.jsp");
}
}
dispatcher.forward(request, response);
}
// MemberDAO.java
public boolean checklogin(String username){
if (username != null && username.equals("admin"))
return true;
return false;
}
我有Member.java,它有构造函数和用户名。
答案 0 :(得分:2)
你真的看你的代码吗?:
public boolean checklogin(String username){
if (username != null && username.equals("admin"))
return true;
return false;
}
你期望这个方法做什么?你已经硬编码了用户名必须为"admin"
的逻辑,而没有别的。因此,在这种情况下,唯一有效的用户名是"admin"
。
如果您希望代码的行为不同,则必须以某种方式对其进行更改。