写一个用户注册的JSP案例,已有数据库work322,数据表student

时间: 2023-05-30 19:06:11 浏览: 102
该案例包括以下内容: 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攻击等。

相关推荐

最新推荐

recommend-type

jsp从数据库获取数据填充下拉框实现二级联动菜单的方法

1、首先在数据库中获取第一个下拉框的数据: &lt;s:select listKey=tsFrom id=t_tsfrom cssClass=required listValue=tsFrom cssStyle=width:90 list=tsfrom1 name=tsFrom theme=simple headerKey= onchange=...
recommend-type

JSP实现用户登录、注册和退出功能

主要为大家详细介绍了JSP实现用户登录、注册和退出功能,具有实用性和参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

有关jsp+mvc+tomcat的一个注册登录程序代码

基于eclipse一个用户注册登录模块代码,有功能要求和开发工具要求。程序有关一个简单的jsp程序的注册登录代码
recommend-type

javaee 实验报告 实验一 JSP+Servlet+Javabean+jdbc-基于MVC模式的数据库的应用

实验一 JSP+Servlet+Javabean+jdbc-基于MVC模式的数据库的应用 实验二 JSF+JPA实现用户注册 实验三 struts+spring+hibernate框架访问数据库的应用 实验四 使用WebService和EJBean访问数据库的应用
recommend-type

mysql取得datetime类型的数据,后面会跟个.0的实现方法

mysql的数据类型是datetime,数据库里存的数据是2015-01-19 05:02:02,传到java这里变成了2015-01-19 05:02:02.0,多了个尾巴.0, 可以通过以下集中方法来format显示格式: 1、regtime的类型是date型的才能这样用,...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。