当前位置:

首页 > 编程开发 > jsp登录注册完整实现代码(增删改查+网页+数据库)

jsp登录注册完整实现代码(增删改查+网页+数据库)

一·登录注册代码以及效果 先看注册页面,register.jsp 负责展示表单,让用户填写用户名、密码和备注信息。代码如下: 注册 #a { width:50%; height:200px; border: 1px dashed ; background-color:lightyellow; tex

一·登录注册代码以及效果

jsp登录注册完整实现代码(增删改查+网页+数据库)

jsp登录注册完整实现代码(增删改查+网页+数据库)

先看注册页面,register.jsp 负责展示表单,让用户填写用户名、密码和备注信息。代码如下:

<%@ page language="ja va" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>注册
用户名:
密码:
备注:

doregister.jsp:注册信息弹框

表单提交后,doregister.jsp 处理注册逻辑:接收参数、连接Oracle数据库、自动生成用户编号(通过查最大编号+1),然后执行插入。根据结果弹出相应的提示框,并跳转到登录页或注册页。

<%@page import="ja va.sql.ResultSet"%><%@page import="ja va.sql.PreparedStatement"%><%@page import="ja va.sql.Connection"%><%@page import="ja va.sql.DriverManager"%><%@page import="oracle.jdbc.driver.OracleDriver"%><%@ page language="ja va" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%//设置编码-设置请求对象的编号request.setCharacterEncoding("utf-8");//接收注册页面传递的数据String uname = request.getParameter("uname");String upwd = request.getParameter("upwd");String uinfo = request.getParameter("uinfo");//连接数据库Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:@localhost:1521:orcl";Connection con = DriverManager.getConnection(url, "scott", "tiger");/*查询到用户的最大编号最大编号+1,做为新添加的用户的编号*///这里的代码是用来 得到最新编号的int nextId=1;//做为新用户的编号PreparedStatement ps = con.prepareStatement("select max(uuid) from T277");//执行sql语句ResultSet rs= ps.executeQuery();if(rs.next()){//查询到最大的编号,加1,就是新数据的编号nextId = rs.getInt(1)+1;}//这里的代码 开始执行添加用户操作ps = con.prepareStatement("insert into T277 values(?,?,?,?)");ps.setInt(1, nextId);ps.setString(2, uname);ps.setString(3, upwd);ps.setString(4, uinfo);//执行sql语句int i = ps.executeUpdate();if(i>0){out.print("");}else{out.print("");}%>

login.jsp:登录

登录页面与注册类似,但多了跳转到注册页的按钮。表单提交到 dologin.jsp 进行验证。

<%@ page language="ja va" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>登录
用户名:
密码:

dologin.jsp:与数据库相连、存放登陆的用户

这个页面接收用户名和密码,查询数据库中的 T277 表。如果匹配则转发到主页面 index.jsp,否则弹出错误提示并返回登录页。

<%@page import="ja va.sql.ResultSet"%><%@page import="ja va.sql.PreparedStatement"%><%@page import="ja va.sql.DriverManager"%><%@page import="ja va.sql.Connection"%><%@page import="oracle.jdbc.driver.OracleDriver"%><%@ page language="ja va" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%//接收login页面传递的数据String uname = request.getParameter("uname");String upwd = request.getParameter("upwd");//连接数据库//注册驱动类//OracleDriverClass.forName("oracle.jdbc.driver.OracleDriver");//连接数据库String url = "jdbc:oracle:thin:@localhost:1521:orcl";Connection con = DriverManager.getConnection(url, "scott", "tiger");//创建对象PreparedStatement ps = con.prepareStatement("select * from T277 where uname=? and upwd=?");//给占位符赋值ps.setString(1, uname);ps.setString(2, upwd);//执行sql语句ResultSet rs = ps.executeQuery();//处理结果if(rs.next()){//转发request.getRequestDispatcher("index.jsp").forward(request, response);}else{//失败out.print("");}//关闭连接%>

index.jsp:主界面

登录成功后进入主界面,这里展示所有用户列表,并提供了修改、详情、删除等操作链接。通过 JSP 脚本循环遍历结果集,动态生成表格行。

<%@page import="ja va.sql.ResultSet"%><%@page import="ja va.sql.PreparedStatement"%><%@page import="ja va.sql.DriverManager"%><%@page import="ja va.sql.Connection"%><%@page import="oracle.jdbc.driver.OracleDriver"%><%@ page language="ja va" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>主页面<%//连接数据库 进行查询所有数据//注册驱动类Class.forName("oracle.jdbc.driver.OracleDriver");//连接数据库String url = "jdbc:oracle:thin:@localhost:1521:orcl";Connection con = DriverManager.getConnection(url, "scott", "tiger");//创建Pre对象PreparedStatement ps = con.prepareStatement("select * from T277 order by uuid");//执行sql语句ResultSet rs = ps.executeQuery();//处理结果-遍历结果集while(rs.next()){%><%} %>
编号用户名密码备注操作
<%=rs.getInt(1) %><%=rs.getString("uname") %><%=rs.getString("upwd") %><%=rs.getString(4) %>修改详情删除

update.jsp:修改

修改操作由 update.jsp 处理:接收修改表单提交的新数据,根据用户编号执行更新 SQL。更新成功或失败都会弹出提示并跳回主页面。

<%@page import="ja va.sql.PreparedStatement"%><%@page import="ja va.sql.DriverManager"%><%@page import="ja va.sql.Connection"%><%@page import="oracle.jdbc.driver.OracleDriver"%><%@ page language="ja va" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%//设置编码-设置请求对象的编号request.setCharacterEncoding("utf-8");//接收修改页面传递的数据String uname = request.getParameter("uname");String upwd = request.getParameter("upwd");String uinfo = request.getParameter("uinfo");//获取要修改的用户编号String id = request.getParameter("uuid");//把字符串转换为整数编号int uuid = Integer.valueOf(id);//JDBC 删除  Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:@localhost:1521:orcl";Connection con = DriverManager.getConnection(url, "scott", "tiger");PreparedStatement ps = con.prepareStatement("update T277 set uname=?,upwd=?, uinfo=? where uuid="+uuid);ps.setString(1, uname);ps.setString(2, upwd);ps.setString(3, uinfo);int i = ps.executeUpdate();if(i>0){out.print("");}else{out.print("");}%>

doup.jsp:修改页面(帮助)

这是修改表单页,通过 URL 参数传递用户编号,将编号隐藏到表单的 action 中,供用户填写新数据后提交。

<%@ page language="ja va" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%>Insert title here<%//获取要修改的用户编号String id = request.getParameter("uuid");//把字符串转换为整数编号int uuid = Integer.valueOf(id);%>
用户名:
密码:
备注:

info.jsp:详情

详情页与修改表单类似,但数据是从数据库查询并填充到输入框中的,且只读展示(这里没有禁用,但可以理解为展示用途)。

<%@page import="ja va.sql.ResultSet"%><%@page import="ja va.sql.PreparedStatement"%><%@page import="ja va.sql.DriverManager"%><%@page import="ja va.sql.Connection"%><%@page import="oracle.jdbc.driver.OracleDriver"%><%@ page language="ja va" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%//获取要修改的用户编号String id = request.getParameter("uuid");//把字符串转换为整数编号int uuid = Integer.valueOf(id);//JDBC 删除Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:@localhost:1521:orcl";Connection con = DriverManager.getConnection(url, "scott", "tiger");PreparedStatement ps = con.prepareStatement("select * from T277 where uuid="+uuid);ResultSet rs= ps.executeQuery();if(rs.next()){%>
用户名:">
密码:">
备注:
返回
<%} %>

dodel.jsp:删除界面

删除操作很简单:获取用户编号,执行 delete 语句,再根据结果弹出提示并跳转回主页面。

<%@page import="ja va.sql.PreparedStatement"%><%@page import="ja va.sql.DriverManager"%><%@page import="ja va.sql.Connection"%><%@page import="oracle.jdbc.driver.OracleDriver"%><%@ page language="ja va" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><%//获取要删除的用户编号String id = request.getParameter("uuid");//把字符串转换为整数编号int uuid = Integer.valueOf(id);//JDBC 删除Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:@localhost:1521:orcl";Connection con = DriverManager.getConnection(url, "scott", "tiger");PreparedStatement ps = con.prepareStatement("delete T277 where uuid="+uuid);int i = ps.executeUpdate();if(i>0){out.print("");}else{out.print("");}%>

二·页面跳转的方式以及他们的区别

在 JSP 开发中,页面跳转是最常见的操作之一。这里用一个简单的登录验证例子来演示重定向和转发的用法及区别。

1、跳转路径并传递数据

假设用户名是 admin,密码是 123。登录成功时,我们有两种方式跳转到 success.jsp:重定向和转发。失败时则用 Ja vaScript 弹窗提示并返回登录页。

 //假设法:假设我的用户名为admin 密码为123    if("admin".equals(name)&&"123".equals(pwd)){        //说明登录成功 跳转到success.jsp//1.重定向 将页面跳转 地址栏发生了改变        //不能将值传递到下一个界面  可以跳转到任意资源  在客户端发挥作用        response.sendRedirect("http://www.baidu.com");//2.转发 将页面跳转 可以将值传递到下一个界面         //但是地址栏不发生改变 而是停留在了之前的页面 只能转发到当前项目内资源 在服务器端发挥作用        //request.getRequestDispatcher("http://www.baidu.com").forward(request, response);    }    else{        //说明登录失败 提示用户并返回登录界面login.jsp js的跳转属于重定向 地址栏发生了改变 login-->dologin-->login        out.print("");    } 

2、页面跳转的两种方式和区别

下面用表格对比一下重定向和转发的核心差异:

重定向:地址栏发生改变 不能传值 可以跳转到任意资源 在客户端发挥作用

转发:地址栏不发生改变 能传值 只能跳转到当前项目内资源 在服务器端发挥作用

语法:

重定向:response.sendR()

转发:request.getreq .for(request,response)

三·其他

最后补充几个开发中经常用到的零散知识点,方便直接拿来用。

1、jdbc连接Oracle

连接字符串固定写法,注意替换本地监听端口和服务名:

URL:jdbc:oracle:thin:@localhost:1521:orcl

2、乱码

在接收请求参数前设置统一编码,避免中文乱码:

request.setCharacterEncoding("utf-8");

3、添加数据时,获取最新编号

自增编号的常用技巧:先查询当前最大编号,加1后作为新记录的主键。代码片段如下:

//这里的代码是用来 得到最新编号的       int nextId=1;//做为新用户的编号    PreparedStatement ps = con.prepareStatement("select max(uuid) from T277");    //执行sql语句    ResultSet rs= ps.executeQuery();    if(rs.next()){        //查询到最大的编号,加1,就是新数据的编号        nextId = rs.getInt(1)+1;    }
本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
编程开发
相关文章 更多
using namespace 使用中遇到的问题怎么解决
using namespace 使用中遇到的问题怎么解决

命名空间的基本概念与常见引入问题在C++等编程语言中,命名空间(namespace)是一种将代码标识符(如变量、函数、类名)封装在特定名称下的机制,其主要目的是避免命名冲突,尤其是在大型项目或使用多个第三方库时。使用“using namespace”指令可以将指定命名空间中的所有名称引入当前作用域,

c语言函数递归 实操经验总结:这些技巧很实用
c语言函数递归 实操经验总结:这些技巧很实用

理解递归的基本原理在C语言中,递归是一种函数调用自身的编程技术。要掌握它,首先需要理解其核心思想:将一个复杂的大问题,分解为一个或几个与原问题相似但规模更小的子问题,直到子问题足够简单,可以直接求解。这个过程通常包含两个关键部分:递归出口和递归体。递归出口定义了问题何时不再继续分解,即最简单、可直接

c语言函数递归 怎么选?常见方案对比分析
c语言函数递归 怎么选?常见方案对比分析

递归函数的基本概念与适用场景在C语言编程中,递归是一种函数调用自身的编程技巧。它并非适用于所有问题,但在处理某些具有自相似结构的问题时,能提供极其清晰和优雅的解决方案。递归的核心思想是将一个大规模问题分解为一个或多个同类型但规模更小的子问题,直到子问题简单到可以直接求解。典型的适用场景包括树形结构的

Objective-C 内存管理入门:从 alloc 到 dealloc 的生命周期详解
Objective-C 内存管理入门:从 alloc 到 dealloc 的生命周期详解

理解内存管理的基石在Objective-C的编程世界中,内存管理是开发者必须掌握的核心技能之一。它直接关系到应用的性能、稳定性与资源利用效率。与一些采用自动垃圾回收机制的语言不同,Objective-C在很长一段时间里,依赖一套基于引用计数的、需要开发者部分介入的管理规则。这套规则的核心思想是明确的

如何正确使用 dealloc 以避免 iOS 应用中的内存泄漏
如何正确使用 dealloc 以避免 iOS 应用中的内存泄漏

理解 dealloc 的角色与时机在 iOS 应用开发中,内存管理是保障应用性能与稳定性的基石。dealloc 方法是 Objective-C 中对象生命周期结束时的关键回调,它标志着对象即将被系统回收内存。正确理解其触发时机至关重要:当一个对象的引用计数降为零时,运行时系统会自动调用该对象的 de

深入理解 Objective-C 中的 dealloc 方法:内存管理核心机制
深入理解 Objective-C 中的 dealloc 方法:内存管理核心机制

内存管理的基石在Objective-C的世界里,内存管理是开发者必须掌握的核心技能之一。作为一门在手动引用计数(MRC)时代诞生的语言,Objective-C要求程序员对对象的生命周期有清晰的认识。dealloc方法正是这一生命周期中至关重要的终点站。它是一个实例方法,当对象的引用计数降为零时,系统

理解 native2ascii:Java 国际化开发中的字符编码工具
理解 native2ascii:Java 国际化开发中的字符编码工具

native2ascii 工具的基本定位在Ja va应用程序的国际化与本地化开发过程中,处理非拉丁字符集是一个常见且关键的环节。Ja va内部使用Unicode字符集来统一表示全球各种语言的文字,但其属性文件(.properties)在历史上要求使用ASCII编码,或者更准确地说,要求非ASCII字

如何使用 native2ascii 转换中文字符为 Unicode 转义序列
如何使用 native2ascii 转换中文字符为 Unicode 转义序列

理解 native2ascii 工具的基本用途在软件开发,特别是涉及国际化处理的场景中,开发者常常需要处理不同编码的文本资源。native2ascii 是 Ja va 开发工具包(JDK)中提供的一个命令行实用程序,其主要功能是将包含本地字符编码(非ASCII字符)的文件,转换为包含 Unicode

Java native2ascii 命令详解:解决属性文件乱码问题
Java native2ascii 命令详解:解决属性文件乱码问题

native2ascii 命令的由来与作用在Ja va开发中,处理国际化资源文件是一个常见需求。资源文件通常以.properties格式存储,用于支持多语言界面。然而,Ja va属性文件默认采用ISO-8859-1字符集编码,这导致了一个直接的问题:当文件中包含非拉丁字符(如中文、日文、韩文等)时,

一个 memwatch 实战案例:定位野指针问题
一个 memwatch 实战案例:定位野指针问题

内存监控工具的价值与挑战在软件开发,尤其是使用C/C++这类手动管理内存的语言时,内存错误是程序员最常遭遇的难题之一。其中,野指针问题因其隐蔽性和破坏性,往往成为最难定位的“幽灵”缺陷。它可能潜伏在代码中,在特定条件下才被触发,导致程序崩溃、数据损坏或难以预测的行为。传统的调试手段,如打印日志或使用

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师
macOS

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

WINDOWS 更多
Windows 10
Windows 10
Windows

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘
Windows/macOS/iOS/Android

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。