给出jsp连接mysql数据库实现注册登录的代码
时间: 2023-09-21 15:02:54 浏览: 40
以下是使用JSP连接MySQL数据库实现注册登录的示例代码。
1. 注册页面(register.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>
<h3>用户注册</h3>
<form action="register.do" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
确认密码:<input type="password" name="confirmPassword"><br>
<input type="submit" value="注册">
</form>
</body>
</html>
```
2. 注册处理页面(register.do)
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%
// 获取注册信息
String username = request.getParameter("username");
String password = request.getParameter("password");
String confirmPassword = request.getParameter("confirmPassword");
// 判断密码是否一致
if (!password.equals(confirmPassword)) {
out.print("<script>alert('两次输入的密码不一致,请重新输入!');history.back();</script>");
return;
}
// 连接数据库
String url = "jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=UTF-8";
String driver = "com.mysql.jdbc.Driver";
String user = "root";
String pass = "root";
Connection conn = null;
PreparedStatement pstmt = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, pass);
// 判断用户名是否存在
String sql = "SELECT * FROM user WHERE username=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
out.print("<script>alert('用户名已存在,请重新输入!');history.back();</script>");
return;
}
// 插入用户信息
sql = "INSERT INTO user(username, password) VALUES (?, ?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
pstmt.executeUpdate();
// 注册成功,跳转到登录页面
response.sendRedirect("login.jsp");
} catch (Exception e) {
e.printStackTrace();
out.print("<script>alert('注册失败,请重试!');history.back();</script>");
return;
} finally {
try {
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
%>
```
3. 登录页面(login.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>
<h3>用户登录</h3>
<form action="login.do" method="post">
用户名:<input type="text" name="username"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="登录">
</form>
</body>
</html>
```
4. 登录处理页面(login.do)
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%
// 获取登录信息
String username = request.getParameter("username");
String password = request.getParameter("password");
// 连接数据库
String url = "jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=UTF-8";
String driver = "com.mysql.jdbc.Driver";
String user = "root";
String pass = "root";
Connection conn = null;
PreparedStatement pstmt = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, user, pass);
// 验证用户信息
String sql = "SELECT * FROM user WHERE username=? AND password=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
// 登录成功,保存用户信息并跳转到首页
session.setAttribute("username", username);
response.sendRedirect("index.jsp");
} else {
out.print("<script>alert('用户名或密码错误,请重新输入!');history.back();</script>");
return;
}
} catch (Exception e) {
e.printStackTrace();
out.print("<script>alert('登录失败,请重试!');history.back();</script>");
return;
} finally {
try {
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
%>
```
注意事项:
1. 需要在WEB-INF/lib目录下添加MySQL的JDBC驱动包(mysql-connector-java.jar);
2. 数据库连接信息需要根据实际情况进行修改;
3. 代码中没有进行SQL注入和XSS攻击防护,请根据实际情况进行加强。