当前位置: 首页 > 知识库问答 >
问题:

将查询到的数据从一个servlet中的数据库传递到另一个Java servlet

狄德泽
2023-03-14

我正在和其他同学完成一个项目,我们被卡住了。在我们的登录servlet中,我们连接到数据库并检索与电子邮件匹配的数据

我们需要这样传递信息:数据库---

谢谢

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>

共有1个答案

江展
2023-03-14

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

RequestDispatcher dispatcher = getServletContext()
      .getRequestDispatcher("/ProfileServlet");
dispatcher.forward(request, response);
 类似资料:
  • 问题内容: 我想将多个值从一个servlet传递到另一个servlet。请告诉我如何通过? 问题答案: 取决于您是否使用会话: 使用session.setAttribute()将数组存储在会话变量中。 使用session.getAttribute();检索数组。 但是,变量将一直保留到会话终止,您用其他东西覆盖它或将其删除为止。 如果将一个servlet转发到另一个servlet,则可以将其存储在

  • 问题内容: 我需要将数据从一个表复制到另一个表。这两个表几乎具有相同的结构,但是位于不同的数据库中。 我试过了 我尝试此操作,但跨数据库出现错误…未实现 问题答案: 这是一个非常简单的任务。只需为此目的使用dblink: 如果您需要定期从外部数据库中获取数据,明智的做法是定义服务器和用户映射。然后,您可以使用较短的语句:

  • 我想将数据从回收视图传递到另一个片段中,第一个适配器用于显示项目,第二个适配器用于篮子片段,希望将选定的项目放入。 我要从中获取数据的适配器 这是我要将数据放入的篮子片段的适配器 现在,我可以用来在它们之间传递数据。

  • 问题内容: 如何从一个数据库复制到另一个数据库。 数据库名称visco 我想将所有表从visco数据库复制到新数据库名称作为neptune 我创建了一个没有任何表的数据库,然后尝试从database1.bak文件还原数据库,然后显示错误为 需要查询帮助 问题答案: 使用SQL Server Management Studio: 选项1 ->右键单击要复制的数据库 ->选择“任务”>“生成脚本” -

  • 我尝试使用 如有任何帮助,不胜感激,谢谢。

  • 问题内容: 我有两个数据库,一个叫做,一个叫做。由于我想练习插入,更新内容,因此我想将某些表从复制到。 我要复制的表称为: 我试图做的是(使用SSMS)右键单击表格,但其中没有“复制”! 问题答案: 假设您有两个数据库,例如A和B: 如果目标表不存在,将创建以下脚本(我不建议这样): INTO COPY_TABLE_HERE FROM A.dbo.table_from_A table_A 如果目标