搭建一个登录界面能够实现从后台拿到数据并验证的一个demo,要求要有前端界面和后端程序的代码,使用java和mysql
时间: 2024-03-23 09:36:18 浏览: 19
好的,以下是一个基于 Java 和 MySQL 的登录界面 Demo。请按照以下步骤操作:
1. 创建数据库
在 MySQL 中创建一个名为 `login_demo` 的数据库,然后创建一个名为 `users` 的表,表结构如下:
```sql
CREATE TABLE users (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100),
username VARCHAR(30),
password VARCHAR(100)
);
```
2. 编写后端程序
在你喜欢的 IDE 中创建一个 Java 项目,然后在项目中添加以下依赖:
- mysql-connector-java (用于连接 MySQL 数据库)
- jstl (用于在 JSP 页面中使用 JSTL 标签)
然后在项目中创建一个名为 `User` 的 Java 类,用于表示用户信息:
```java
public class User {
private int id;
private String name;
private String email;
private String username;
private String password;
public User(int id, String name, String email, String username, String password) {
this.id = id;
this.name = name;
this.email = email;
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getEmail() {
return email;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
```
然后在项目中创建一个名为 `Database` 的 Java 类,用于处理数据库连接及查询操作:
```java
import java.sql.*;
public class Database {
private static final String URL = "jdbc:mysql://localhost/login_demo";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456"; // 修改为你的 MySQL 密码
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(URL, USERNAME, PASSWORD);
}
public static User getUser(String username, String password) throws SQLException {
try (Connection conn = getConnection()) {
String sql = "SELECT * FROM users WHERE username = ? AND password = ?";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
stmt.setString(1, username);
stmt.setString(2, password);
try (ResultSet rs = stmt.executeQuery()) {
if (rs.next()) {
return new User(
rs.getInt("id"),
rs.getString("name"),
rs.getString("email"),
rs.getString("username"),
rs.getString("password"));
}
}
}
}
return null;
}
}
```
然后在项目中创建一个名为 `LoginServlet` 的 Java Servlet,用于处理登录请求:
```java
import java.io.IOException;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
try {
User user = Database.getUser(username, password);
if (user != null) {
HttpSession session = request.getSession();
session.setAttribute("user_id", user.getId());
session.setAttribute("username", user.getUsername());
response.sendRedirect(request.getContextPath() + "/dashboard");
} else {
request.setAttribute("error", "Invalid username or password");
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
}
} catch (SQLException e) {
throw new ServletException("Error getting user from database", e);
}
}
}
```
最后在项目中创建一个名为 `DashboardServlet` 的 Java Servlet,用于显示用户仪表盘:
```java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet("/dashboard")
public class DashboardServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(false);
if (session != null && session.getAttribute("user_id") != null) {
request.getRequestDispatcher("/WEB-INF/views/dashboard.jsp").forward(request, response);
} else {
response.sendRedirect(request.getContextPath() + "/");
}
}
}
```
3. 创建前端界面
在项目中创建一个名为 `webapp` 的目录,在该目录下创建一个名为 `views` 的目录,然后在该目录下创建两个 JSP 文件:`login.jsp` 和 `dashboard.jsp`。
`login.jsp` 内容如下:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<% if (request.getAttribute("error") != null) { %>
<p style="color: red;"><%= request.getAttribute("error") %></p>
<% } %>
<form method="post" action="${pageContext.request.contextPath}/login">
<div>
<label>Username:</label>
<input type="text" name="username" required>
</div>
<div>
<label>Password:</label>
<input type="password" name="password" required>
</div>
<div>
<input type="submit" value="Login">
</div>
</form>
</body>
</html>
```
`dashboard.jsp` 内容如下:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Dashboard</title>
</head>
<body>
<h1>Welcome, <%= session.getAttribute("username") %>!</h1>
<p><a href="${pageContext.request.contextPath}/logout">Logout</a></p>
</body>
</html>
```
4. 运行程序
在你喜欢的 IDE 中启动 Tomcat 服务器,然后在浏览器中访问 `http://localhost:8080/login` 即可看到登录界面。
注意:本 Demo 只是一个简单的示例,实际使用中需要对密码进行加密处理等安全措施。