给出使用 javaweb和MySQL实现简易的注册登录功能的代码
时间: 2023-06-25 08:02:27 浏览: 82
这里提供一个简单的注册登录功能的示例代码,使用JavaWeb和MySQL实现:
1. 创建数据库表
首先创建一个名为“user”的MySQL数据库表,包含以下字段:
```
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username_UNIQUE` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
2. 创建JavaBean类
创建一个名为“User”的JavaBean类,包含以下属性和方法:
```java
public class User {
private int id;
private String username;
private String password;
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;
}
}
```
3. 编写DAO层代码
创建一个名为“UserDAO”的类,用于操作数据库。包含以下方法:
```java
public class UserDAO {
// 数据库连接信息
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/test";
private static final String USERNAME = "root";
private static final String PASSWORD = "123456";
// 获取数据库连接
public Connection getConnection() throws SQLException, ClassNotFoundException {
Class.forName(DRIVER);
return DriverManager.getConnection(URL, USERNAME, PASSWORD);
}
// 关闭数据库连接
public void closeConnection(Connection conn, Statement stmt, ResultSet rs) throws SQLException {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
}
// 根据用户名查询用户信息
public User getUserByUsername(String username) throws SQLException, ClassNotFoundException {
User user = null;
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = getConnection();
stmt = conn.prepareStatement("SELECT * FROM user WHERE username = ?");
stmt.setString(1, username);
rs = stmt.executeQuery();
if (rs.next()) {
user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
}
} finally {
closeConnection(conn, stmt, rs);
}
return user;
}
// 添加用户信息
public void addUser(User user) throws SQLException, ClassNotFoundException {
Connection conn = null;
PreparedStatement stmt = null;
try {
conn = getConnection();
stmt = conn.prepareStatement("INSERT INTO user (username, password) VALUES (?, ?)");
stmt.setString(1, user.getUsername());
stmt.setString(2, user.getPassword());
stmt.executeUpdate();
} finally {
closeConnection(conn, stmt, null);
}
}
}
```
4. 编写Servlet代码
创建一个名为“RegisterServlet”的Servlet类,用于处理用户注册请求。包含以下代码:
```java
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
UserDAO dao = new UserDAO();
try {
// 判断用户名是否已存在
if (dao.getUserByUsername(username) != null) {
request.setAttribute("message", "用户名已存在!");
request.getRequestDispatcher("/register.jsp").forward(request, response);
} else {
// 添加用户信息
User user = new User();
user.setUsername(username);
user.setPassword(password);
dao.addUser(user);
request.setAttribute("message", "注册成功!");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
request.setAttribute("message", "注册失败,请稍后重试!");
request.getRequestDispatcher("/register.jsp").forward(request, response);
}
}
}
```
创建一个名为“LoginServlet”的Servlet类,用于处理用户登录请求。包含以下代码:
```java
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
UserDAO dao = new UserDAO();
try {
// 根据用户名获取用户信息
User user = dao.getUserByUsername(username);
if (user == null) {
request.setAttribute("message", "用户名不存在!");
request.getRequestDispatcher("/login.jsp").forward(request, response);
} else if (!user.getPassword().equals(password)) {
request.setAttribute("message", "密码错误!");
request.getRequestDispatcher("/login.jsp").forward(request, response);
} else {
request.getSession().setAttribute("user", user);
request.getRequestDispatcher("/index.jsp").forward(request, response);
}
} catch (SQLException | ClassNotFoundException e) {
e.printStackTrace();
request.setAttribute("message", "登录失败,请稍后重试!");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
}
```
5. 编写JSP页面
创建一个名为“register.jsp”的JSP页面,用于用户注册。包含以下代码:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户注册</title>
</head>
<body>
<h1>用户注册</h1>
<% String message = request.getAttribute("message") == null ? "" : request.getAttribute("message").toString(); %>
<% if (!message.equals("")) { %>
<p><%= message %></p>
<% } %>
<form action="register" method="post">
<p>
用户名:<input type="text" name="username" required>
</p>
<p>
密码:<input type="password" name="password" required>
</p>
<p>
<input type="submit" value="注册">
</p>
</form>
<a href="login.jsp">已有账号?去登录</a>
</body>
</html>
```
创建一个名为“login.jsp”的JSP页面,用于用户登录。包含以下代码:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户登录</title>
</head>
<body>
<h1>用户登录</h1>
<% String message = request.getAttribute("message") == null ? "" : request.getAttribute("message").toString(); %>
<% if (!message.equals("")) { %>
<p><%= message %></p>
<% } %>
<form action="login" method="post">
<p>
用户名:<input type="text" name="username" required>
</p>
<p>
密码:<input type="password" name="password" required>
</p>
<p>
<input type="submit" value="登录">
</p>
</form>
<a href="register.jsp">没有账号?去注册</a>
</body>
</html>
```
创建一个名为“index.jsp”的JSP页面,用于用户登录后的首页。包含以下代码:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1>欢迎 <%= ((User) session.getAttribute("user")).getUsername() %> </h1>
<a href="logout">退出登录</a>
</body>
</html>
```
6. 部署项目
将以上代码保存到对应的文件中,并将JavaBean类和DAO类的.class文件放到WEB-INF/classes目录下。将MySQL驱动文件放到WEB-INF/lib目录下。将所有文件打包成.war文件,并部署到Tomcat或其他JavaWeb服务器上。
7. 测试功能
访问http://localhost:8080/login.jsp,进行用户登录;访问http://localhost:8080/register.jsp,进行用户注册。如果用户名已存在,则注册失败;如果用户名不存在或密码错误,则登录失败;登录成功后跳转到http://localhost:8080/index.jsp页面,显示欢迎信息和退出登录按钮。点击退出登录按钮,退出登录并返回到登录页面。