这里提供一个简单的登录注册页面的示例代码,基于Java Web和JSP技术,使用MySQL数据库存储用户信息。
1. 创建MySQL数据库,包含一个名为users的表,表结构如下:
```sql
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
```
2. 创建Java Web项目,并添加MySQL数据库连接驱动。
3. 在项目中创建一个名为users的package,用于存放与用户相关的Java类。
4. 在users package中创建一个名为User的Java类,包含id、username和password三个属性,以及相应的get、set方法。
```java
public class User {
private int id;
private String username;
private String password;
// 构造方法
public User() {}
// get、set方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
```
5. 在users package中创建一个名为UserDAO的Java类,用于实现用户数据访问功能,包括注册、登录、查询用户等方法。
```java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDAO {
// 注册用户
public boolean register(User user) {
// 获取数据库连接对象
Connection conn = DBUtil.getConnection();
PreparedStatement pstmt = null;
try {
// 定义SQL语句
String sql = "insert into users(username, password) values(?, ?)";
pstmt = conn.prepareStatement(sql);
// 设置参数
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
// 执行SQL语句
int count = pstmt.executeUpdate();
if(count > 0) {
return true;
} else {
return false;
}
} catch (SQLException e) {
e.printStackTrace();
return false;
} finally {
// 关闭数据库连接
DBUtil.closeConnection(conn, pstmt, null);
}
}
// 验证用户名和密码是否正确
public boolean login(String username, String password) {
// 获取数据库连接对象
Connection conn = DBUtil.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// 定义SQL语句
String sql = "select * from users where username=? and password=?";
pstmt = conn.prepareStatement(sql);
// 设置参数
pstmt.setString(1, username);
pstmt.setString(2, password);
// 执行SQL语句
rs = pstmt.executeQuery();
// 判断是否存在匹配的用户
if(rs.next()) {
return true;
} else {
return false;
}
} catch (SQLException e) {
e.printStackTrace();
return false;
} finally {
// 关闭数据库连接
DBUtil.closeConnection(conn, pstmt, rs);
}
}
// 根据用户名查询用户信息
public User getUserByUsername(String username) {
// 获取数据库连接对象
Connection conn = DBUtil.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// 定义SQL语句
String sql = "select * from users where username=?";
pstmt = conn.prepareStatement(sql);
// 设置参数
pstmt.setString(1, username);
// 执行SQL语句
rs = pstmt.executeQuery();
// 将查询结果封装为User对象
if(rs.next()) {
User user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
return user;
} else {
return null;
}
} catch (SQLException e) {
e.printStackTrace();
return null;
} finally {
// 关闭数据库连接
DBUtil.closeConnection(conn, pstmt, rs);
}
}
}
```
6. 在项目中创建一个名为web的package,用于存放与Web相关的Java类和JSP页面。
7. 在web package中创建一个名为RegisterServlet的Java类,用于处理用户注册请求。
```java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private UserDAO userDao = new UserDAO();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
// 将用户名和密码封装为User对象
User user = new User();
user.setUsername(username);
user.setPassword(password);
// 注册用户
boolean success = userDao.register(user);
if(success) {
// 注册成功,重定向到登录页面
response.sendRedirect("login.jsp");
} else {
// 注册失败,返回注册页面并显示错误消息
request.setAttribute("error", "注册失败,请重试!");
request.getRequestDispatcher("register.jsp").forward(request, response);
}
}
}
```
8. 在web package中创建一个名为LoginServlet的Java类,用于处理用户登录请求。
```java
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private UserDAO userDao = new UserDAO();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
// 验证用户名和密码是否正确
boolean success = userDao.login(username, password);
if(success) {
// 登录成功,将用户信息保存到Session中,并重定向到首页
User user = userDao.getUserByUsername(username);
HttpSession session = request.getSession();
session.setAttribute("user", user);
response.sendRedirect("index.jsp");
} else {
// 登录失败,返回登录页面并显示错误消息
request.setAttribute("error", "用户名或密码错误,请重试!");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
}
```
9. 在web package中创建register.jsp和login.jsp两个JSP页面,分别用于显示注册和登录界面。
register.jsp:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户注册</title>
</head>
<body>
<h1>用户注册</h1>
<form method="post" action="RegisterServlet">
<p>
<label>用户名:</label>
<input type="text" name="username" required>
</p>
<p>
<label>密码:</label>
<input type="password" name="password" required>
</p>
<p>
<input type="submit" value="注册">
</p>
<p>
<a href="login.jsp">已有账号?点击登录</a>
</p>
</form>
<% String error = (String)request.getAttribute("error"); %>
<% if(error!=null && !error.equals("")) { %>
<div style="color:red;">${error}</div>
<% } %>
</body>
</html>
```
login.jsp:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户登录</title>
</head>
<body>
<h1>用户登录</h1>
<form method="post" action="LoginServlet">
<p>
<label>用户名:</label>
<input type="text" name="username" required>
</p>
<p>
<label>密码:</label>
<input type="password" name="password" required>
</p>
<p>
<input type="submit" value="登录">
</p>
<p>
<a href="register.jsp">没有账号?点击注册</a>
</p>
</form>
<% String error = (String)request.getAttribute("error"); %>
<% if(error!=null && !error.equals("")) { %>
<div style="color:red;">${error}</div>
<% } %>
</body>
</html>
```
10. 部署项目到Tomcat服务器上,并访问register.jsp和login.jsp页面进行注册和登录操作。