使用JSP+Javabean+servlet的模式来进行设计,实现管理员登录验证。表名: admin,字段: id(int)主键、name(String)、password(String)具体要求:登录时验证用户是否存在,如果存在将用户名存入session并重定向intfsp页面,在该页面显示“欢迎X”,否则转发至index. jsp, 并提示:用户不存在或者密码错误。数据库用SQL,数据源用jdbc。要求连接数据库以及查询的功能由Javabean实现。
1条回答 默认 最新
关注【以下回答由 GPT 生成】
解决方案如下:
- 首先,创建一个用于连接数据库的Javabean类,命名为DatabaseUtil.java。该类应该包含一个用于连接数据库的方法getConnection(),以及一个用于执行查询操作的方法selectUser(String username, String password),返回一个布尔值表示用户是否存在。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class DatabaseUtil { private static final String jdbcUrl = "jdbc:mysql://localhost:3306/mydatabase"; private static final String jdbcUsername = "admin"; private static final String jdbcPassword = "admin"; public Connection getConnection() { Connection connection = null; try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection(jdbcUrl, jdbcUsername, jdbcPassword); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } return connection; } public boolean selectUser(String username, String password) { try { String query = "SELECT * FROM admin WHERE name=? AND password=?"; Connection connection = getConnection(); PreparedStatement statement = connection.prepareStatement(query); statement.setString(1, username); statement.setString(2, password); ResultSet resultSet = statement.executeQuery(); return resultSet.next(); } catch (SQLException e) { e.printStackTrace(); } return false; } }- 创建一个Servlet类作为登录验证的控制器,命名为LoginServlet.java。在doPost()方法中,获取表单中的用户名和密码,然后调用DatabaseUtil的selectUser()方法来验证用户是否存在。如果验证通过,则将用户名存入session,并重定向到intfsp.jsp页面。如果验证不通过,则转发到index.jsp,并显示相应的错误提示。
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @WebServlet("/login") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); DatabaseUtil databaseUtil = new DatabaseUtil(); boolean isValidUser = databaseUtil.selectUser(username, password); if (isValidUser) { HttpSession session = request.getSession(); session.setAttribute("username", username); response.sendRedirect("intfsp.jsp"); } else { request.setAttribute("errorMessage", "用户名或密码错误"); request.getRequestDispatcher("index.jsp").forward(request, response); } } }- 在intfsp.jsp页面中,使用JSP代码获取session中的用户名,并进行欢迎信息的显示。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <html> <head> <title>Intfsp</title> </head> <body> <% String username = (String) session.getAttribute("username"); out.println("欢迎 " + username); %> </body> </html>- 在index.jsp页面中,使用JSP代码获取并显示错误提示。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <html> <head> <title>Login</title> </head> <body> <% String errorMessage = (String) request.getAttribute("errorMessage"); if (errorMessage != null) { out.println(errorMessage); } %> <form action="login" method="post"> <input type="text" name="username" placeholder="用户名"><br> <input type="password" name="password" placeholder="密码"><br> <input type="submit" value="登录"> </form> </body> </html>这样,就完成了使用JSP+Javabean+servlet设计模式实现管理员登录验证系统的设计与实现。
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报