有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我应该如何创建这个新页面?JSP还是servlet?

我对网络开发完全陌生,我希望能得到一些帮助。我正在使用JavaEclipseEE、tomcat服务器和mysql做一个工资系统web应用程序项目。我使用了一个教程,并设法创建了下面的登录界面。所以现在,当我点击“输入我的登录详细信息”并点击“登录”(在localhost:8080/Payroll)时,我希望它进入一个网页(我不知道如何创建),并显示一个按钮列表(我以后可以重命名的任意按钮)。谁能帮帮我吗。我不知道怎么用。JSP。html。java和我真的很困惑这些文件类型将如何帮助我获得我想要的东西。请帮助别人,我只想登录按钮重定向到一个有按钮的网页。谢谢

登录。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);
    }
}  


    }

索引。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>

验证。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;                 
      }   
    }

共 (1) 个答案

  1. # 1 楼答案

    作为你的索引。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)。p>

    关于代码的一些注释:

    你永远不会关闭连接、语句、结果集。考虑连接池并尝试使用资源:

    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;                 
      }