当前位置:
文档之家› JSP动态网站开发之实现用户登录身份验证
JSP动态网站开发之实现用户登录身份验证
1 / 46
第五篇:
JSP 动态网站开发之实现用户登录身份验证
欧长海所写
各位同学,大家好,我叫海洋,热衷于网站的开发。而且,本人 曾经开发过一些站点。凭着自己积累的一些小经验,给基础 JSP 网站 开发的朋友们介绍一下 JSP 站点的开发过程。在这里,我来给大家讲 讲动态的 JSP 站点的简单开发。 在过程中,可能会有一些词语错误等,希望大家谅解。因为书写 的时候,并没有通过校正就直接发表了。
欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证
18 / 46
这里,我们用 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); }
(2)、logok.jsp 具体设计如下:
欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证
11 / 46
(3)、logfail.jsp 设计如下:
欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证
12 / 46
好了,页面简单的设计完了。
六、 链接数据库
(1)、打开 test.jsp 选择“应用程序“-》数据库-》选择加 号-》选择” MySQL 驱动程序(MySQL)”。然后我们设置一下连接 数据库的参数。如下: 连接名:newtest 第二项保持不变。 URL:jdbc:mysql://localhost:3306/test 。直接指向我们的数据 库 test。 用户名和密码自己设的,会不一样。我的用户名是 root,密码 为空。和建议大家的是一样的。 配置好了之后,点击“测试“。(注意:这里先别选择确定, 避免没有连接成功。) 我们来看一下测试结果。
欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证
3 / 46
第一步、navicat 里创建连接
下一步、
我们建立一个叫 test 的数据库。在 127.0.0.1 的主机
名上右键点击“打开连接”,之后我们看到几个信息,一个是 information——schema,另一个是 mysql。
欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证
4 / 46
下一步、
再次右键点击 127.0.0.1。 在弹出的选择窗口里选择 “创
建数据库”。如图
我们可以看到,成功创建的 tes基础动态网站开发系列之五:用户登录身份验证
5 / 46
接下来,我们建立两个表。其中,user 表是我给大家演示用 的,admin 表是大家在我讲完之后实战用的。目的是巩固所学, 加强理解。 (1)、admin 表 首先,定义 admin 表里的两个对象,管理员帐号和密码。定 义如下:
八、 预览
接下来,我们预览一下效果。 首先,地址栏输入:http://localhost:8080/newtest/test.jsp。 进入 登陆界面。 输入任意不是我们在数据库里的用户名和密码都是 user 的任意用 户名和密码。我们来看一下效果。
点击“提交“按钮。发现登录失败了。我们进不去了。出现了我 们刚才设计的三个页面之一的登陆错误提示页面。
欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证
13 / 46
七、 对准数据库
这一步,我们要对准数据库的项了。 这里,我们点击“服务器行为“-》加号-》用户身份验证-》登 录用户。 接下来,就要匹配了。具体如下:
欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证
14 / 46
设置完后,单击确定按钮。
欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证
2 / 46
(3) Dreamweaver 8 实现简单的 JSP 网页的服务器和数据 库行为等,并实现对网页的美工设计。 (4) MyEclipse6.5 用来写 JSP 网页的。 (5) MySQL5.1 数据库 (6) Navicat8 实现 MySQL 的图形界面管理。
当然,这是基础了。大家会了这个,我们再深入。
欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证
17 / 46
九、 相关知识
这里,我们说一些相关的知识.方便大家进一步了解我们的 dreamweaver。 首先,我们知道,因为每一种动态脚本的编译环境不一样,导致 了我们需要的服务器环境不一样。但是,dreamweaver 基本上可以实 现 ASP、、PHP、JSP 等常规的网页的编辑。 基本的功能, 只要我们对 dreamweaver 熟悉到一定程度, 都可以 做到的。但是一些比较特殊的,或者层次比较高一点的。希望如果大 家感兴趣的话,可以在 Myeclipse 里开发。 由于服务器的环境不一样,所以,如果换了一种脚本语言,可能 我们需要配置新的服务器环境了。 其实,JSP 链接到数据库的操作也很简单。我们也可以适当的了 解一下。 不如, 我们演示一下吧! 为了举例, 我多加了几个用户, 但是, 为了容易给大家理解,我只读入一个用户。
在这里,我们并没有给大家介绍像 JSPmyadmin 等其他的一些软 件,大家想研究的,可以自己试着摸索。这里就省略了。
二、 软件的安装
关于以上软件的安装,上课的时候,都给大家讲过了,我也 仔细的看了大家的配置。 都是成功的。 所以, 这里也省略了。
三、 设计数据库的表
为了简单起见,这里,我们不需要设置复杂的数据库表,只是 简单的示范一下登录身份的验证。 所以, 可能我们只需要一个 user 表,表里有一个用户就够了。 当然,大家也可以设计一个 admin 表来试验一下。 首先,我们建立一个 test 数据库。在数据库里定义两个表。
在接下来的这一节里, 我们主要介绍的是, 如何通过 dreamweaver 实现简单的用户登录。
一、 环境的配置
首先,我们要回忆一下,前几节课里,我给大家讲的环境配置。 这里,我们再回顾一下。 (1) JDK1.6.0 用来编译 JSP 网页的。 (2) Tomcat6.0 JSP 运行的服务器环境。
欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证
10 / 46
为 了节约时间,也是为了让大家明白这个简单的道理, 所以,我的设计很简单。大家也可以做的很简单。咱们先循 序渐进嘛! 等大家都会了,下次我们学深入一点的。
具体页面简单设计如下: (1)、test.jsp 包括两个文本域。一个是 username、 另一个是 password。 具体如下:
欧长海 JSP 基础动态网站开发系列之五:用户登录身份验证
用户登录验证:
19 / 46
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 er 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; }