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

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;    }
本文转载于:https://www.jb51.net/program/3107754vt.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。