我是Web开发的新手,请提供帮助。我正在使用Java Eclipse EE,tomcat服务器和mysql进行薪资系统Web应用程序项目。我使用了一个教程,并设法在下面创建了登录界面。所以,现在,当我单击输入我的登录详细信息并单击登录(位于localhost:8080 / Payroll)时,我希望它转到一个网页(我不知道如何创建)并显示按钮列表(任意按钮,以后可以重命名)。有人可以帮帮我吗。我不知道如何使用.JSP,.html,.java,而且我对这些文件类型如何帮助我获得所需的信息感到困惑。请帮助某人,我只希望登录按钮重定向到带有按钮的网页。谢谢。

Login.java(Servlet)

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class Login extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

    String employee_id = request.getParameter("employee_id");
    String password = request.getParameter("password");
    if(Validate.checkUser(employee_id, password)) {
        RequestDispatcher rs = request.getRequestDispatcher("**SOME FILE NAME HERE TO REDIRECT TO?**");
        rs.forward(request, response);
    }
    else
    {
       out.println("Employee ID or Password is incorrect. Please try again.");
       RequestDispatcher rs = request.getRequestDispatcher("index.html");
       rs.include(request, response);
    }
}


    }


index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<form action="login" method="post">
<h3>
Employee Login
</h3>
 <b>Employee ID:</b> <br>
 <input type="text"name="employee_id" size="20"><br><br>
<b>Password:</b><br>
<input type="password" name="password" size="20"><br><br>
<input type="submit" value="Login"><br><br>
</form>
</body>
</html>


Validate.java(类文件)

import java.sql.*;
public class Validate
{
    public static boolean checkUser(String employee_id, String password)
    {
        boolean st = false;
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/payroll_system", "root", "");
            PreparedStatement ps = con.prepareStatement("select * from employee_login where employeeID = ? and pwd = ?");
            ps.setString(1, employee_id);
            ps.setString(2, password);
            ResultSet rs =ps.executeQuery();
             st = rs.next();

         }catch(Exception e)
          {
              e.printStackTrace();
          }
             return st;
      }
    }

最佳答案

由于您的index.html已经是“带有按钮的页面”,因此它似乎很适合您。

但是,如果您的页面将包含动态数据,那么最好使用jsp。

您可能需要先在会话中设置用户名,然后在jsp中显示该用户名:

    request.setAttribute("user", employee_id);
    RequestDispatcher rs = request.getRequestDispatcher("stackoverflow.jsp");
    rs.forward(request, response);


并在stackoverflow.jsp中

  <h2><%= request.getAttribute("user") %></h2>


现在比较直接调用jsp和通过登录调用jsp的情况。

一定要先阅读一下Web项目中的MVC,并在对概念有所了解后考虑使用框架(例如Spring)。

有关代码的一些注意事项:

您永远不会关闭Connection,Statement,ResultSet。考虑一个连接池和try-with-resource:

public static boolean checkUser(String employee_id, String password)
{
    boolean st = false;
    try (Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/payroll_system", "root", "");
           PreparedStatement ps =
                con.prepareStatement("select * from employee_login where employeeID = ? and pwd = ?")) {
        ps.setString(1, employee_id);
        ps.setString(2, password);
        try(ResultSet rs =ps.executeQuery()) {
          return rs.next();
        }
     }catch(Exception e) {
          e.printStackTrace();
      }
     return false;
  }

10-04 23:07
查看更多