为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

JSP动态网站开发之数据库的存取、修改、删除

2011-06-21 46页 pdf 3MB 33阅读

用户头像

is_479129

暂无简介

举报
JSP动态网站开发之数据库的存取、修改、删除 1 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 第五篇: JSP 动态网站开发之实现用户登录身份验证 欧长海所写 各位同学,大家好,我叫海洋,热衷于网站的开发。而且,本人 曾经开发过一些站点。凭着自己积累的一些小经验,给基础 JSP 网站 开发的朋友们介绍一下 JSP 站点的开发过程。在这里,我来给大家讲 讲动态的 JSP 站点的简单开发。 在过程中,可能会有一些词语错误等,希望大家谅解。因为书写 的时候,并没有通过校正就直接发表了。 ...
JSP动态网站开发之数据库的存取、修改、删除
1 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 第五篇: JSP 动态网站开发之实现用户登录身份验证 欧长海所写 各位同学,大家好,我叫海洋,热衷于网站的开发。而且,本人 曾经开发过一些站点。凭着自己积累的一些小经验,给基础 JSP 网站 开发的朋友们介绍一下 JSP 站点的开发过程。在这里,我来给大家讲 讲动态的 JSP 站点的简单开发。 在过程中,可能会有一些词语错误等,希望大家谅解。因为书写 的时候,并没有通过校正就直接发了。 在接下来的这一节里,我们主要介绍的是,如何通过 dreamweaver 实现简单的用户登录。 一、 环境的配置 首先,我们要回忆一下,前几节课里,我给大家讲的环境配置。 这里,我们再回顾一下。 (1) JDK1.6.0 用来编译 JSP 网页的。 (2) Tomcat6.0 JSP 运行的服务器环境。 2 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 (3) Dreamweaver 8 实现简单的 JSP 网页的服务器和数据 库行为等,并实现对网页的美工设计。 (4) MyEclipse6.5 用来写 JSP 网页的。 (5) MySQL5.1 数据库 (6) Navicat8 实现 MySQL 的图形界面管理。 在这里,我们并没有给大家介绍像 JSPmyadmin 等其他的一些软 件,大家想研究的,可以自己试着摸索。这里就省略了。 二、 软件的安装 关于以上软件的安装,上课的时候,都给大家讲过了,我也 仔细的看了大家的配置。都是成功的。所以,这里也省略了。 三、 设计数据库的表 为了简单起见,这里,我们不需要设置复杂的数据库表,只是 简单的示范一下登录身份的验证。所以,可能我们只需要一个 user 表,表里有一个用户就够了。 当然,大家也可以设计一个 admin 表来试验一下。 首先,我们建立一个 test 数据库。在数据库里定义两个表。 3 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 第一步、navicat 里创建连接 下一步、 我们建立一个叫 test 的数据库。在 127.0.0.1 的主机 名上右键点击“打开连接”,之后我们看到几个信息,一个是 information——schema,另一个是 mysql。 4 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 下一步、 再次右键点击 127.0.0.1。在弹出的选择窗口里选择“创 建数据库”。如图 我们可以看到,成功创建的 test 数据库会出现在主机 127.0.0.1 的 下面。 5 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 接下来,我们建立两个表。其中,user 表是我给大家演示用 的,admin 表是大家在我讲完之后实战用的。目的是巩固所学, 加强理解。 (1)、admin 表 首先,定义 admin 表里的两个对象,管理员帐号和密码。定 义如下: 定义成功之后,我们需要录入一些管理员账户,如 root、admin 等。当然还有他们对应的密码。 如下图所示: 6 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 接下来,我们再定义 user 表。由于用户的很多信息多我们很 重要,所以,尽量获取我们所需要的各项用户信息。这里,我们 还是简单的定义即可。 具体如下: (2)、user 表 7 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 定义完了之后,我们输入一个用户 user。具体如下: 接下来,我们看看我们建立以上操作的结晶。 8 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 好了,到这里,数据库方面据节本建立好了。这里我们需要的只 是等待连接了。 四、 建立站点 现在我们打开 dreamweaver,新建一个叫 newtest 的站点。 定义如下: 再定义测试服务器方式。 9 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 完了之后点击确定。站点就定义好了。 五、 建立网页 为了用户登录身份验证的需要,我们需要定义三个网页。 (1)、test.jsp 实现用户输入登录信息。 (2)、logok.jsp 用户登陆成功是转到的网页 (3)、用户登录失败时转到的网页。 10 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 为 了节约时间,也是为了让大家明白这个简单的道理, 所以,我的设计很简单。大家也可以做的很简单。咱们先循 序渐进嘛! 等大家都会了,下次我们学深入一点的。 具体页面简单设计如下: (1)、test.jsp 包括两个文本域。一个是 username、 另一个是 password。 具体如下: (2)、logok.jsp 具体设计如下: 11 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 (3)、logfail.jsp 设计如下: 12 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 好了,页面简单的设计完了。 六、 链接数据库 (1)、打开 test.jsp 选择“应用程序“-》数据库-》选择加 号-》选择” MySQL 驱动程序(MySQL)”。然后我们设置一下连接 数据库的参数。如下: 连接名:newtest 第二项保持不变。 URL:jdbc:mysql://localhost:3306/test 。直接指向我们的数据 库 test。 用户名和密码自己设的,会不一样。我的用户名是 root,密码 为空。和建议大家的是一样的。 配置好了之后,点击“测试“。(注意:这里先别选择确定, 避免没有连接成功。) 我们来看一下测试结果。 13 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 七、 对准数据库 这一步,我们要对准数据库的项了。 这里,我们点击“服务器行为“-》加号-》用户身份验证-》登 录用户。 接下来,就要匹配了。具体如下: 14 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 设置完后,单击确定按钮。 八、 预览 接下来,我们预览一下效果。 首先,地址栏输入:http://localhost:8080/newtest/test.jsp。 进入 登陆界面。 输入任意不是我们在数据库里的用户名和密码都是 user 的任意用 户名和密码。我们来看一下效果。 点击“提交“按钮。发现登录失败了。我们进不去了。出现了我 们刚才设计的三个页面之一的登陆错误提示页面。 15 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 返回登录界面,我们输入只有数据库里的唯一对象 user 用户的用户 名和密码。 如下所示: 16 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 点击“提交“按钮。我们发现: 哎!转到我们的登录成功页了。我们的登录操作成功了。因 为我们的数据库里之后唯一的成员 user 和她对应的密码。所以,除 了这个用户之外,其他人都是进不去的。就是我们所说的用户登录身 份验证。 当然,这是基础了。大家会了这个,我们再深入。 17 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 九、 相关知识 这里,我们说一些相关的知识.方便大家进一步了解我们的 dreamweaver。 首先,我们知道,因为每一种动态脚本的编译环境不一样,导致 了我们需要的服务器环境不一样。但是,dreamweaver 基本上可以实 现 ASP、ASP.NET、PHP、JSP 等常规的网页的编辑。 基本的功能,只要我们对 dreamweaver 熟悉到一定程度,都可以 做到的。但是一些比较特殊的,或者层次比较高一点的。希望如果大 家感兴趣的话,可以在 Myeclipse 里开发。 由于服务器的环境不一样,所以,如果换了一种脚本语言,可能 我们需要配置新的服务器环境了。 其实,JSP 链接到数据库的操作也很简单。我们也可以适当的了 解一下。 不如,我们演示一下吧! 为了举例,我多加了几个用户,但是, 为了容易给大家理解,我只读入一个用户。 18 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 这里,我们用 Myeclipse 写有几个小程序。 (1)、login.jsp 用户登录验证: 具体代码如下: <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" %> <% String MM_newtest_DRIVER = "org.gjt.mm.mysql.Driver"; String MM_newtest_USERNAME = "root"; String MM_newtest_PASSWORD = ""; String MM_newtest_STRING = "jdbc:mysql://localhost:3306/test"; String MM_LoginAction = request.getRequestURI(); if (request.getQueryString() != null && request.getQueryString().length() > 0) { String queryString = request.getQueryString(); String tempStr = ""; for (int i=0; i < queryString.length(); i++) { if (queryString.charAt(i) == '<') tempStr = tempStr + "<"; else if (queryString.charAt(i) == '>') tempStr = tempStr + ">"; else if (queryString.charAt(i) == '"') tempStr = tempStr + """; else tempStr = tempStr + queryString.charAt(i); } 19 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 MM_LoginAction += "?" + tempStr; } String MM_valUsername=request.getParameter("username"); if (MM_valUsername != null) { String MM_fldUserAuthorization=""; String MM_redirectLoginSuccess="logok.jsp"; String MM_redirectLoginFailed="logfail.jsp"; String MM_redirectLogin=MM_redirectLoginFailed; Driver MM_driverUser = (Driver)Class.forName(MM_newtest_DRIVER).newInstance(); Connection MM_connUser = DriverManager.getConnection(MM_newtest_STRING,MM_newtest_USERNAME,MM _newtest_PASSWORD); String MM_pSQL = "SELECT username, userpassword"; if (!MM_fldUserAuthorization.equals("")) MM_pSQL += "," + MM_fldUserAuthorization; MM_pSQL += " FROM test.user WHERE username=\'" + MM_valUsername.replace('\'', ' ') + "\' AND userpassword=\'" + request.getParameter("password").toString().replace('\'', ' ') + "\'"; PreparedStatement MM_statementUser = MM_connUser.prepareStatement(MM_pSQL); ResultSet MM_rsUser = MM_statementUser.executeQuery(); boolean MM_rsUser_isNotEmpty = MM_rsUser.next(); if (MM_rsUser_isNotEmpty) { // username and password match - this is a valid user session.putValue("MM_Username", MM_valUsername); if (!MM_fldUserAuthorization.equals("")) { session.putValue("MM_UserAuthorization", MM_rsUser.getString(MM_fldUserAuthorization).trim()); } else { session.putValue("MM_UserAuthorization", ""); } if ((request.getParameter("accessdenied") != null) && false) { MM_redirectLoginSuccess = request.getParameter("accessdenied"); } MM_redirectLogin=MM_redirectLoginSuccess; } MM_rsUser.close(); MM_connUser.close(); response.sendRedirect(response.encodeRedirectURL(MM_redirectLogin)); return; } 20 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 %> 用户登录  

用户请登录!

用户名:
密码:
【用户登录验证代码到这里结束】 21 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 (2)、sqlread.jsp 下面,我们再从数据库里读入数据库信息。为了降低我们读入数据的难度, 这里我们只读入有一个 user 的 user 表。 代码如下: <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" %> <% String MM_newtest_DRIVER = "org.gjt.mm.mysql.Driver"; //定义驱动程序 String MM_newtest_USERNAME = "root"; //有连接数据库权限的用户名 String MM_newtest_PASSWORD = ""; //root 的密码 String MM_newtest_STRING = "jdbc:mysql://localhost:3306/test"; //数据库的资源定位 Driver DriverRecordset1 = (Driver)Class.forName(MM_newtest_DRIVER).newInstance(); //装载数据库驱动程序 Connection ConnRecordset1 = DriverManager.getConnection(MM_newtest_STRING,MM_newtest_USERNAME,MM _newtest_PASSWORD); //建立数据库的连接 PreparedStatement StatementRecordset1 = ConnRecordset1.prepareStatement("SELECT * FROM test.user ORDER BY userID ASC"); //创建 statement 对象 ResultSet Recordset1 = StatementRecordset1.executeQuery(); //完成数据库的数据获取 boolean Recordset1_isEmpty = !Recordset1.next(); //表空 boolean Recordset1_hasData = !Recordset1_isEmpty; //不为空 Object Recordset1_data; int Recordset1_numRows = 0;//数量 %> <% //这里是记录第一条数据到最后一条数据,以及总的数据量 int Recordset1_first = 1; int Recordset1_last = 1; int Recordset1_total = -1; if (Recordset1_isEmpty) { Recordset1_total = Recordset1_first = Recordset1_last = 0; 22 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 } if (Recordset1_numRows == 0) { Recordset1_numRows = 1; } %> <% if (Recordset1_total == -1) { // count the total records by iterating through the recordset for (Recordset1_total = 1; Recordset1.next(); Recordset1_total++); // reset the cursor to the beginning Recordset1.close(); Recordset1 = StatementRecordset1.executeQuery(); Recordset1_hasData = Recordset1.next(); // set the number of rows displayed on this page if (Recordset1_numRows < 0 || Recordset1_numRows > Recordset1_total) { Recordset1_numRows = Recordset1_total; } // set the first and last displayed record Recordset1_first = Math.min(Recordset1_first, Recordset1_total); Recordset1_last = Math.min(Recordset1_first + Recordset1_numRows - 1, Recordset1_total); } %> 从数据库中读入数据
读入 user 里的数据

用户资料从 <%=(Recordset1_first)%>到<%=(Recordset1_last)%>总共 <%=(Recordset1_total)%>条记录!

编号 用户名 密码 昵称 性别 手机
<%=(((Recordset1_data = Recordset1.getObject("userID"))==null || Recordset1.wasNull())?"":Recordset1_data)%> <%=(((Recordset1_data = Recordset1.getObject("username"))==null || Recordset1.wasNull())?"":Recordset1_data)%> <%=(((Recordset1_data = Recordset1.getObject("userpassword"))==null || Recordset1.wasNull())?"":Recordset1_data)%> <%=(((Recordset1_data = Recordset1.getObject("usernick"))==null || Recordset1.wasNull())?"":Recordset1_data)%> <%=(((Recordset1_data = Recordset1.getObject("usersex"))==null || Recordset1.wasNull())?"":Recordset1_data)%> <%=(((Recordset1_data = Recordset1.getObject("usercellphone"))==null || Recordset1.wasNull())?"":Recordset1_data)%>
24 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证

 

 

 

<% //关闭链接 Recordset1.close(); StatementRecordset1.close(); ConnRecordset1.close(); %> 发现这样的代码其实很常见,理解起来也不难的吧? 看看效果: (2)、userUpdate.jsp 25 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 下面,我们来介绍更改用户信息。 具体实现如下: <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <% String MM_newtest_DRIVER = "org.gjt.mm.mysql.Driver"; String MM_newtest_USERNAME = "root"; String MM_newtest_PASSWORD = ""; String MM_newtest_STRING = "jdbc:mysql://localhost:3306/test"; String MM_editAction = request.getRequestURI(); if (request.getQueryString() != null && request.getQueryString().length() > 0) { String queryString = request.getQueryString(); String tempStr = ""; for (int i=0; i < queryString.length(); i++) { if (queryString.charAt(i) == '<') tempStr = tempStr + "<"; else if (queryString.charAt(i) == '>') tempStr = tempStr + ">"; else if (queryString.charAt(i) == '"') tempStr = tempStr + """; else tempStr = tempStr + queryString.charAt(i); } MM_editAction += "?" + tempStr; } String MM_editDriver = null, MM_editConnection = null, MM_editUserName = null, MM_editPassword = null; String MM_editRedirectUrl = null; StringBuffer MM_editQuery = null; boolean MM_abortEdit = false; String MM_editTable = null, MM_editColumn = null, MM_recordId = null; String[] MM_fields = null, MM_columns = null; %> <% // 更新记录 if (request.getParameter("MM_update") != null && request.getParameter("MM_update").toString().equals("form1") && request.getParameter("MM_recordId") != null) { 26 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 MM_editDriver = MM_newtest_DRIVER; MM_editConnection = MM_newtest_STRING; MM_editUserName = MM_newtest_USERNAME; MM_editPassword = MM_newtest_PASSWORD; MM_editTable = "test.user"; MM_editColumn = "userID"; MM_recordId = "" + request.getParameter("MM_recordId") + ""; MM_editRedirectUrl = "addok.jsp"; String MM_fieldsStr = "name|value|password|value|nick|value|sex|value|phone|value"; String MM_columnsStr = "username|',none,''|userpassword|',none,''|usernick|',none,''|userse x|',none,''|usercellphone|',none,''"; java.util.StringTokenizer tokens = new java.util.StringTokenizer(MM_fieldsStr,"|"); MM_fields = new String[tokens.countTokens()]; for (int i=0; tokens.hasMoreTokens(); i++) MM_fields[i] = tokens.nextToken(); tokens = new java.util.StringTokenizer(MM_columnsStr,"|"); MM_columns = new String[tokens.countTokens()]; for (int i=0; tokens.hasMoreTokens(); i++) MM_columns[i] = tokens.nextToken(); for (int i=0; i+1 < MM_fields.length; i+=2) { MM_fields[i+1] = ((request.getParameter(MM_fields[i])!=null)?(String)request.getParam eter(MM_fields[i]):""); } if (MM_editRedirectUrl.length() != 0 && request.getQueryString() != null) { MM_editRedirectUrl += ((MM_editRedirectUrl.indexOf('?') == -1)?"?":"&") + request.getQueryString(); } } %> <% 27 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 if (request.getParameter("MM_update") != null && request.getParameter("MM_recordId") != null) { // create the update sql statement MM_editQuery = new StringBuffer("update ").append(MM_editTable).append(" set "); for (int i=0; i+1 < MM_fields.length; i+=2) { String formVal = MM_fields[i+1]; String elem; java.util.StringTokenizer tokens = new java.util.StringTokenizer(MM_columns[i+1],","); String delim = ((elem = (String)tokens.nextToken()) != null && elem.compareTo("none")!=0)?elem:""; String altVal = ((elem = (String)tokens.nextToken()) != null && elem.compareTo("none")!=0)?elem:""; String emptyVal = ((elem = (String)tokens.nextToken()) != null && elem.compareTo("none")!=0)?elem:""; if (formVal.length() == 0) { formVal = emptyVal; } else { if (altVal.length() != 0) { formVal = altVal; } else if (delim.compareTo("'") == 0) { // escape quotes StringBuffer escQuotes = new StringBuffer(formVal); for (int j=0; j < escQuotes.length(); j++) if (escQuotes.charAt(j) == '\'') escQuotes.insert(j++,'\''); formVal = "'" + escQuotes + "'"; } else { formVal = delim + formVal + delim; } } MM_editQuery.append((i!=0)?",":"").append(MM_columns[i]).append(" = ").append(formVal); } MM_editQuery.append(" where ").append(MM_editColumn).append(" = ").append(MM_recordId); if (!MM_abortEdit) { Driver MM_driver = (Driver)Class.forName(MM_editDriver).newInstance(); 28 / 46 欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证 Connection MM_connection = DriverManager.getConnection(MM_editConnection,MM_editUserName,MM_edi tPassword); PreparedStatement MM_editStatement = MM_connection.prepareStatement(MM_editQuery.toString()); MM_editStatement.executeUpdate(); MM_connection.close(); if (MM_editRedirectUrl.length() != 0) { response.sendRedirect(response.encodeRedirectURL(MM_editRedirectUrl) ); return; } } } %> <% Driver DriverRecorduser = (Driver)Class.forName(MM_newtest_DRIVER).newInstance(); Connection ConnRecorduser = DriverManager.getConnection(MM_newtest_STRING,MM_newtest_USERNAME,MM _newtest_PASSWORD); PreparedStatement StatementRecorduser = ConnRecorduser.prepareStatement("SELECT * FROM test.user"); ResultSet Recorduser = StatementRecorduser.executeQuery(); boolean Recorduser_isEmpty = !Recorduser.next(); boolean Recorduser_hasData = !Recorduser_isEmpty; Object Recorduser_data; int Recorduser_numRows = 0; %> 修改用户信息
修改用户信息  
用户名:
" />
密码:
" />
昵称:
" />
性别:
/
本文档为【JSP动态网站开发之数据库的存取、修改、删除】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索