【发布时间】:2021-01-11 19:50:05
【问题描述】:
所以我正在尝试为大学作业做一个项目,但我无法让登录 servlet 工作。这段代码是我们的讲师给我们的,对他来说似乎总是很好,所以当我在 Netbeans 11.3 中创建 servlet 时(我们也使用 TomCat 9 作为我们的服务器,并复制了它可以工作的代码,但它没有转到正确的页面。 应该发生的是,如果密码和电子邮件为空,它会返回 login.jsp 页面,如果输入管理员凭据,它会转到 adminHome.jsp,如果它只是数据库中的普通用户(我们'重新使用 derby)它应该转到 shop.jsp 页面。 就目前而言,代码不会超过第一个 if 语句 - 如果密码和电子邮件为空,请转到 login.jsp 页面。我在这里真的很茫然,我一辈子都无法让它工作,这是我项目的重要组成部分,我需要它运行,否则我会失去很多分数。
LoginServlet.java
public class LoginServlet extends HttpServlet implements IConstants {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
* methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String email = request.getParameter("email");
String password = request.getParameter("password");
if (StringUtils.isStringEmpty(email) || StringUtils.isStringEmpty(password)) {
RequestDispatcher rd = request.getRequestDispatcher("/login.jsp");
rd.forward(request, response);
System.out.println("This is the first breakpoint");
} else {
UserManager uMgr = new UserManager();
User user = uMgr.loginUser(email, password);
if (user == null) {
RequestDispatcher rd = request.getRequestDispatcher("/login.jsp");
rd.forward(request, response);
System.out.println("This is the second breakpoint");
} else {
request.getSession(true).setAttribute(IConstants.SESSION_KEY_USER, user);
if (user.getUserType().equals(IConstants.USER_TYPE_ADMIN)) {
RequestDispatcher rd = request.getRequestDispatcher("/adminHome.jsp");
rd.forward(request, response);
} else if (user.getUserType().equals(IConstants.USER_TYPE_GENERAL_USER)) {
RequestDispatcher rd = request.getRequestDispatcher("/shop.jsp");
rd.forward(request, response);
} else {
RequestDispatcher rd = request.getRequestDispatcher("/index.html");
rd.forward(request, response);
}
}
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
login.jsp
<div class="container" id="LoginPageContainer">
<!-- Log In -->
<div class="container" id="login">
<div class="login" style="width: 500px; float:left; height:500px; background:#8AA994; margin:20px">
<form class="form-signin" action="LoginServlet" method="POST">
<input type="hidden" name="action" value="add">
<br/>
<br/>
<br/>
<h3 class="form-signin-heading">You need to be logged in to complete your purchase</h3>
<br/>
<h3 class="form-signin-heading"> Please Log In </h3>
<input type="text" class="input-block-level" id="email" placeholder="Email Address">
<br/>
<br/>
<input type="password" class="input-block-level" id="password" placeholder="Password">
<br/>
<label class="checkbox">
<input type="checkbox" value="remember-me"> Remember me
</label>
<br>
<a class="forgot-password" href="#">Forgot Password?</a>
<br/>
<br/>
<input type="submit" id="SignIn" value="Login">
</form>
</div>
</div>
IConstants.java
public interface IConstants {
//User Types
public static final String USER_TYPE_ADMIN = "ADMIN";
public static final String USER_TYPE_GENERAL_USER = "GENUSER";
//Session Keys
public static final String SESSION_KEY_USER = "SKUSER";
public static final String SESSION_KEY_ALL_USERS = "SKALLUSERS";
}
我不确定还包括什么,它是在 Netbeans 11.3、TomCat 9.0.40 上创建的,它是一个 Ant 项目。很长一段时间以来,我一直坚信这是一个 TomCat 问题,但我设法让他给我们运行的另一个示例项目,我复制了该代码并对其进行了调整以适合我的代码,但没有运气,它拒绝超过我在 LoginServlet 中有第一个断点。 任何帮助都将不胜感激!
【问题讨论】:
标签: html servlets http-request-parameters