写一个用户注册的JSP案例,已有数据库work322,数据表student
时间: 2023-05-30 13:06:11 浏览: 166
该案例包括以下内容:
1. 用户输入注册信息,包括用户名、密码、确认密码、邮箱等。
2. 在用户提交注册信息后,首先进行表单验证,确保所有必填字段都已填写,密码与确认密码一致,邮箱格式正确等。
3. 验证通过后,将用户信息插入到数据库中。
4. 注册成功后,跳转到登录页面。
下面是一个简单的用户注册JSP案例:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户注册</title>
</head>
<body>
<h1>用户注册</h1>
<form action="register.jsp" method="post">
<label>用户名:</label>
<input type="text" id="username" name="username" required><br>
<label>密码:</label>
<input type="password" id="password" name="password" required><br>
<label>确认密码:</label>
<input type="password" id="confirmPassword" name="confirmPassword" required><br>
<label>邮箱:</label>
<input type="email" id="email" name="email" required><br>
<button type="submit">注册</button>
</form>
<c:if test="${not empty errorMessage}">
<p style="color: red">${errorMessage}</p>
</c:if>
</body>
</html>
```
在上面的JSP页面中,我们使用了HTML的表单元素,包括用户名、密码、确认密码和邮箱。其中,所有的表单元素都是必填项,因此我们在每个表单元素上都添加了`required`属性。
当用户提交表单时,我们将表单数据提交到`register.jsp`页面进行处理。下面是`register.jsp`页面的代码:
```
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册结果</title>
</head>
<body>
<c:choose>
<c:when test="${not empty param.username and not empty param.password and not empty param.confirmPassword and not empty param.email}">
<c:if test="${param.password eq param.confirmPassword}">
<c:if test="${fn:contains(param.email, '@')}">
<%
String username = request.getParameter("username");
String password = request.getParameter("password");
String email = request.getParameter("email");
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/work322", "root", "password");
stmt = conn.prepareStatement("INSERT INTO student (username, password, email) VALUES (?, ?, ?)");
stmt.setString(1, username);
stmt.setString(2, password);
stmt.setString(3, email);
int rows = stmt.executeUpdate();
if (rows > 0) {
response.sendRedirect("login.jsp");
} else {
throw new SQLException("Failed to insert user");
}
} catch (ClassNotFoundException | SQLException e) {
out.print("<p style=\"color: red\">" + e.getMessage() + "</p>");
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
// ignore
}
}
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
// ignore
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// ignore
}
}
}
%>
</c:if>
<c:if test="${not fn:contains(param.email, '@')}">
<c:set var="errorMessage" value="邮箱格式不正确" scope="request"/>
<jsp:forward page="register.jsp"/>
</c:if>
</c:if>
<c:if test="${param.password ne param.confirmPassword}">
<c:set var="errorMessage" value="密码与确认密码不一致" scope="request"/>
<jsp:forward page="register.jsp"/>
</c:if>
</c:when>
<c:otherwise>
<c:set var="errorMessage" value="所有字段均为必填项" scope="request"/>
<jsp:forward page="register.jsp"/>
</c:otherwise>
</c:choose>
</body>
</html>
```
在`register.jsp`页面中,我们首先使用`<c:choose>`和`<c:when>`标签判断是否所有必填字段都已填写。如果是,则继续进行后续的验证,否则将错误信息保存到`errorMessage`变量中,并通过`<jsp:forward>`标签跳转回注册页面。
在验证密码和确认密码是否一致以及邮箱格式是否正确后,我们使用JDBC向数据库中插入用户信息。如果插入成功,则将用户重定向到登录页面;否则,将错误信息输出到页面上。
需要注意的是,在实际应用中,我们应该使用ORM框架如Hibernate、MyBatis等来操作数据库,而不是直接使用JDBC。另外,在处理表单数据时,应该进行一些安全性的考虑,如防止SQL注入、XSS攻击等。
阅读全文