编写Servlet程序,获取前端输入的用户名和密码信息,通过与数据库表中的信息比对,验证登录用户的身份,登录成功则在前端显示登录成功以及欢迎登录用户的信息,并且数据库中该用户的登录次数加1,否则显示登录失败,回到重新登录页面程序分析
时间: 2024-05-06 15:14:50 浏览: 16
为了编写这个Servlet程序,需要以下步骤:
1. 在前端页面中创建一个表单,用于输入用户名和密码,并将表单的action设置为Servlet程序的URL。
2. 在Servlet程序中,通过request.getParameter()方法获取前端输入的用户名和密码信息。
3. 使用JDBC连接数据库,查询该用户名和密码是否匹配数据库中的信息。
4. 如果匹配,则在前端页面显示登录成功以及欢迎登录用户的信息,并且更新数据库中该用户的登录次数。
5. 如果不匹配,则在前端页面显示登录失败,并提供重新登录的链接。
下面是一个简单的示例代码:
```java
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 获取前端输入的用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// 连接数据库
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";
String dbUser = "root";
String dbPassword = "123456";
conn = DriverManager.getConnection(url, dbUser, dbPassword);
// 查询数据库中是否存在该用户
String sql = "SELECT * FROM users WHERE username=? AND password=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
rs = pstmt.executeQuery();
if (rs.next()) {
// 更新该用户的登录次数
int loginCount = rs.getInt("login_count") + 1;
sql = "UPDATE users SET login_count=? WHERE username=?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, loginCount);
pstmt.setString(2, username);
pstmt.executeUpdate();
// 在前端页面显示登录成功以及欢迎登录用户的信息
out.println("<html><head><title>登录成功</title></head>");
out.println("<body><h1>欢迎您," + username + "!</h1>");
out.println("<p>您已成功登录,登录次数:" + loginCount + "</p>");
out.println("</body></html>");
} else {
// 在前端页面显示登录失败,并提供重新登录的链接
out.println("<html><head><title>登录失败</title></head>");
out.println("<body><h1>登录失败,请重新登录!</h1>");
out.println("<p><a href='login.html'>重新登录</a></p>");
out.println("</body></html>");
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
// 关闭数据库连接
try {
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
需要注意的是,这个示例代码中使用的是MySQL数据库,需要先下载并安装MySQL,并创建一个名为test的数据库,其中包含一个名为users的表,该表包含以下字段:
- id:自增长主键
- username:用户名
- password:密码
- login_count:登录次数