传递从一个servlet数据库查询的数据,再到另一个Java Servlet

发布于 2025-02-14 01:25:19 字数 6937 浏览 5 评论 0原文

我正在与其他一些班同伴一起完成一个项目,我们被困了。在我们的登录servlet中,我们连接到数据库并检索与电子邮件&的数据相匹配。密码标准。 Servlet将信息行添加到新的用户对象中,然后将用户放入数组中。 (创建数组是为了一次尝试传递所有数据),我们还尝试仅通过一个属性。一旦数据传递给配置文件,我们需要它以显示在特定标签旁边。目前,我们尚未在配置文件中显示profile.html,因为我们只是试图验证我们可以首先传递变量。

我们需要这样的信息来通过: 数据库---> loginservlet-> profileservlet

谢谢!

Loginservlet

@WebServlet("/LogInServlet" )
public class LogInServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    List<User> users = new ArrayList<User>();

    public LogInServlet() {
        super();
    }
   
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
    
    }
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException{
        
        String email = request.getParameter("email");
        String password = request.getParameter("password");
        PrintWriter writer = response.getWriter();
        

        String selectQuery="SELECT * FROM `user` WHERE email = ? and password = ?" ;
        
        Connection connection =DBConnection.getConnectionToDatabase();
        java.sql.PreparedStatement statement;   
            try {
                
                statement = connection.prepareStatement(selectQuery);
                statement.setString(1,email);
                statement.setString(2,password);
                
                
                ResultSet set = statement.executeQuery();
                
                if(set.next()) {
                    
                    User user = new User();
                    user.setEmail(set.getString("email"));
                    user.setPassword(set.getString("password"));
                    user.setFirstName(set.getString("firstName"));
                    user.setLastName(set.getString("lastName"));
                    user.setDateOfBirth(set.getString("DOB"));
                    
                    users.add(user);
                    // THIS CODE TO SEND TO NEXT SERVLET
                    //request.setAttribute("email", set.getString(email));
                   // RequestDispatcher rd = request.getRequestDispatcher("/ProfileServlet");
                    //rd.forward(request, response);
                    
                    //FOLLOWING CODE IS TEST CODE TO PROFILE HTML
                   response.sendRedirect("profile.html");
                   
                } else {
                    String errorMessage ="<html>\r\n"
                            + "<head>\r\n"
                            + "<meta charset=\"ISO-8859-1\">\r\n"
                            + "<link rel=\"stylesheet\" type=\"text/css\" href=\"style2.css\">\r\n"
                            + "<title>Log In Error</title>\r\n"
                            + "</head>\r\n"
                            + "<body>\r\n"
                            + "<div class=\"accountMessage\">\r\n"
                            + "<h1 class=\"message\">Log in unsuccessful, please try again.</h1>\r\n"
                            + "<button class=\"messageLogIn\" onclick=\"history.back()\">Log In</button>\r\n"
                            + "</div>\r\n"
                            + "</body>\r\n"
                            + "</html>";
                    
                    writer.write(errorMessage);
                }
                set.close();
                statement.close();
                
                    
                
            } catch (SQLException e) {
                String errorMessage ="<html>\r\n"
                        + "<head>\r\n"
                        + "<meta charset=\"ISO-8859-1\">\r\n"
                        + "<link rel=\"stylesheet\" type=\"text/css\" href=\"style2.css\">\r\n"
                        + "<title>Log In Error</title>\r\n"
                        + "</head>\r\n"
                        + "<body>\r\n"
                        + "<div class=\"accountMessage\">\r\n"
                        + "<h1 class=\"message\">Log in unsuccessful, please try again.</h1>\r\n"
                        + "<button class=\"messageLogIn\" onclick=\"history.back()\">Log In</button>\r\n"
                        + "</div>\r\n"
                        + "</body>\r\n"
                        + "</html>";
                
                writer.write(errorMessage);
                e.printStackTrace();
            }
            
                
        
    }
   }

个人资料servlet

//PROFILE PAGE WOULD BE DISPLAY HERE WITH USER DATA QUERYED FROM LOG IN PAGE
@WebServlet("/ProfileServlet")
public class ProfileServlet extends HttpServlet {
     /**
     * 
     */
    private static final long serialVersionUID = -6589250865438405024L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            PrintWriter writer = response.getWriter();
           //List<User> users = (ArrayList<User>)request.getAttribute("myList");
            
           String email =(String)request.getAttribute("email");
           
            
            
        writer.write("<html><body>"+email+"</body></html>");
        }
}

配置文件html

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Profile Page</title>
<link rel="stylesheet" type="text/css" href="style3.css">
</head>
<body>

<img src="images/CanadaLogo.jpg" width="230px" height="100px">

<h3 class="profileHeading">Profile Page</h3>

<br>
<div class="navBarCon">
<!--Comments between divs remove white spaces-->
<div class="navItem"><a class="linkA" href="">Home</a></div><!--
  --><div class="navItem"><a class="linkA" href="">Verify Identity</a></div><!--
--><div class="navItem"><a class="linkA" href="">Voting Portal</a></div><!--
--><div class="navItem"><a class="linkA" href="">Help</a></div><!--
--><div class="navItem"><a class="linkA" href="LogIn.html">Log Out</a></div><!--

--></div>

<div class="profileCon">
<img src="images/profileIcon.png" width="150px" height="150px">
<h3 class="pLabel">Name: </h3> <!-- NAME DISPLAYED HERE -->
<h3 class="pLabel">Date of birth: </h3> <!-- DOB DISPLAYED HERE -->
<h3 class="pLabel">Email: </h3> <!-- EMAIL DISPLAYED HERE -->


</div>

</body>
</html>

I am completing a project with some other class mates and we are stuck. In our Log In servlet, we are connecting to the database and retrieving the data matching the email & password criteria. The servlet adds the result row of information to a new user object , then placing the user in an Array. (The Array was created to try and pass all of the data at once), we have also tried only passing one attribute. Once the data is passed to the profile we need it to display next to specific labels. Currently we have not yet displayed the profile.html in the profile servlet, as we are just trying to verify that we can pass the variables first.

We need the information to pass like so :
Database ---> LogInServlet-->ProfileServlet

Thanks!

LogInServlet

@WebServlet("/LogInServlet" )
public class LogInServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    List<User> users = new ArrayList<User>();

    public LogInServlet() {
        super();
    }
   
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        
    
    }
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException{
        
        String email = request.getParameter("email");
        String password = request.getParameter("password");
        PrintWriter writer = response.getWriter();
        

        String selectQuery="SELECT * FROM `user` WHERE email = ? and password = ?" ;
        
        Connection connection =DBConnection.getConnectionToDatabase();
        java.sql.PreparedStatement statement;   
            try {
                
                statement = connection.prepareStatement(selectQuery);
                statement.setString(1,email);
                statement.setString(2,password);
                
                
                ResultSet set = statement.executeQuery();
                
                if(set.next()) {
                    
                    User user = new User();
                    user.setEmail(set.getString("email"));
                    user.setPassword(set.getString("password"));
                    user.setFirstName(set.getString("firstName"));
                    user.setLastName(set.getString("lastName"));
                    user.setDateOfBirth(set.getString("DOB"));
                    
                    users.add(user);
                    // THIS CODE TO SEND TO NEXT SERVLET
                    //request.setAttribute("email", set.getString(email));
                   // RequestDispatcher rd = request.getRequestDispatcher("/ProfileServlet");
                    //rd.forward(request, response);
                    
                    //FOLLOWING CODE IS TEST CODE TO PROFILE HTML
                   response.sendRedirect("profile.html");
                   
                } else {
                    String errorMessage ="<html>\r\n"
                            + "<head>\r\n"
                            + "<meta charset=\"ISO-8859-1\">\r\n"
                            + "<link rel=\"stylesheet\" type=\"text/css\" href=\"style2.css\">\r\n"
                            + "<title>Log In Error</title>\r\n"
                            + "</head>\r\n"
                            + "<body>\r\n"
                            + "<div class=\"accountMessage\">\r\n"
                            + "<h1 class=\"message\">Log in unsuccessful, please try again.</h1>\r\n"
                            + "<button class=\"messageLogIn\" onclick=\"history.back()\">Log In</button>\r\n"
                            + "</div>\r\n"
                            + "</body>\r\n"
                            + "</html>";
                    
                    writer.write(errorMessage);
                }
                set.close();
                statement.close();
                
                    
                
            } catch (SQLException e) {
                String errorMessage ="<html>\r\n"
                        + "<head>\r\n"
                        + "<meta charset=\"ISO-8859-1\">\r\n"
                        + "<link rel=\"stylesheet\" type=\"text/css\" href=\"style2.css\">\r\n"
                        + "<title>Log In Error</title>\r\n"
                        + "</head>\r\n"
                        + "<body>\r\n"
                        + "<div class=\"accountMessage\">\r\n"
                        + "<h1 class=\"message\">Log in unsuccessful, please try again.</h1>\r\n"
                        + "<button class=\"messageLogIn\" onclick=\"history.back()\">Log In</button>\r\n"
                        + "</div>\r\n"
                        + "</body>\r\n"
                        + "</html>";
                
                writer.write(errorMessage);
                e.printStackTrace();
            }
            
                
        
    }
   }

Profile Servlet

//PROFILE PAGE WOULD BE DISPLAY HERE WITH USER DATA QUERYED FROM LOG IN PAGE
@WebServlet("/ProfileServlet")
public class ProfileServlet extends HttpServlet {
     /**
     * 
     */
    private static final long serialVersionUID = -6589250865438405024L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            PrintWriter writer = response.getWriter();
           //List<User> users = (ArrayList<User>)request.getAttribute("myList");
            
           String email =(String)request.getAttribute("email");
           
            
            
        writer.write("<html><body>"+email+"</body></html>");
        }
}

Profile HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Profile Page</title>
<link rel="stylesheet" type="text/css" href="style3.css">
</head>
<body>

<img src="images/CanadaLogo.jpg" width="230px" height="100px">

<h3 class="profileHeading">Profile Page</h3>

<br>
<div class="navBarCon">
<!--Comments between divs remove white spaces-->
<div class="navItem"><a class="linkA" href="">Home</a></div><!--
  --><div class="navItem"><a class="linkA" href="">Verify Identity</a></div><!--
--><div class="navItem"><a class="linkA" href="">Voting Portal</a></div><!--
--><div class="navItem"><a class="linkA" href="">Help</a></div><!--
--><div class="navItem"><a class="linkA" href="LogIn.html">Log Out</a></div><!--

--></div>

<div class="profileCon">
<img src="images/profileIcon.png" width="150px" height="150px">
<h3 class="pLabel">Name: </h3> <!-- NAME DISPLAYED HERE -->
<h3 class="pLabel">Date of birth: </h3> <!-- DOB DISPLAYED HERE -->
<h3 class="pLabel">Email: </h3> <!-- EMAIL DISPLAYED HERE -->


</div>

</body>
</html>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

许你一世情深 2025-02-21 01:25:20

如果用户通过身份验证,则您的LoginServlet可以将请求转发到profileservlet,否则返回错误页面响应(或转发到提供错误响应的另一个Servlet)。

RequestDispatcher dispatcher = getServletContext()
      .getRequestDispatcher("/ProfileServlet");
dispatcher.forward(request, response);

If the user passes authentication, your LoginServlet can forward the request to the ProfileServlet, otherwise return an error page response (or forward to another Servlet that provides the error response).

RequestDispatcher dispatcher = getServletContext()
      .getRequestDispatcher("/ProfileServlet");
dispatcher.forward(request, response);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文