首页 理论教育无刷新验证用户名密码及Servlet中的JavaBean引用

无刷新验证用户名密码及Servlet中的JavaBean引用

【摘要】:下面的一组程序演示了无刷新判定用户在登录页面输入的用户名和密码与数据库表db_user中保存的用户名和密码是否一致。若一致则是系统的用户,允许进入系统。3)参照“实训48”,编写录入用户名和密码存储到db_user表中的应用程序,录入如下用户名和密码,如表5-2所示。因要与数据库中已保存的用户名和密码比较,它引用“conOracle.java”程序完成与数据库的连接。图5-1 无刷新判断用户名和密码(正确)图5-2 无刷新判断用户名和密码(错误)test.jsp:

一般,合法的用户才能登录管理信息系统。下面的一组程序(“login.htm”、“checkLog- in.java”、“conOracle.java”)演示了无刷新判定用户在登录页面输入的用户名和密码与数据库表db_user中保存的用户名和密码是否一致。若一致则是系统的用户,允许进入系统。若不一致,不能进入系统,因为是“无刷新”,程序还停留在登录页面,原先输入的内容还在,可以即时修正。

1)参照“实训8”,在db_student库中建表,如表5-1所示,表名是:db_user,表中字段定义如下:

表5-1 db_user

978-7-111-38219-5-Chapter05-1.jpg

2)连接数据库db_student的JavaBean程序“conOracle.java”与“实训48”中的一致。

3)参照“实训48”,编写录入用户名和密码存储到db_user表中的应用程序,录入如下用户名和密码,如表5-2所示。

表5-2 录入内容

978-7-111-38219-5-Chapter05-2.jpg

4)“login.htm”程序是登录页面,它在名字为f1的表单form中接收用户输入的用户名和密码。单击“登录”按钮后,执行javaScript函数userCheck(),它检查若用户输入了用户名和密码则调用createXMLHttpRequest()函数生成XMLHttpRequest对象,再调用sendRequest()函数向服务器的“checkLogin.java”发送异步请求并由processResponse()函数处理返回的结果。

在createXMLHttpRequest()函数中,因IE浏览器与其他浏览器生成XMLHttpRequest对象的语句不同,所以用语句if(window.ActiveXObject)判断是不是IE浏览器,ActiveXOb- ject是IE浏览器的特定对象,因此,若返回ture则是IE浏览器。

sendRequest()函数首先调用createXMLHttpRequest()函数生成XMLHttpRequest对象httpRequest。然后,用httpRequest.open()方法建立(准备)对服务器的请求,其中“post”是数据发送的方法,“/servlet/test.checkLogin”是请求的URL指定的Servlet程序,“true”表示异步请求。“httpRequest.onreadystatechange=processResponse;”表示一旦有返回结果的状态变化则自动执行processResponse()函数。最后用httpRequest.send()发送请求,由于采用“post”方法传送数据,所以send(usr)方法的参数就是要传送的数据即用户名和密码。

sendRequest()函数中还在注释部分给出了如何用get方法请求Servlet程序、如何用post方法请求jsp程序、如何用get方法请求jsp程序的示例。

使用“记事本”输入如下“login.htm”程序并存放在“E49”目录中:

login.htm:

978-7-111-38219-5-Chapter05-3.jpg

978-7-111-38219-5-Chapter05-4.jpg

978-7-111-38219-5-Chapter05-5.jpg

5)“checkLogin.java”是Servlet程序,响应“login.htm”程序中发来的异步请求。因要与数据库中已保存的用户名和密码比较,它引用“conOracle.java”程序完成与数据库的连接。“conOracle.java”虽然是作为JavaBean程序部署的,但它本质上就是Java程序,可以用import语句引入到“checkLogin.java”中使用它。(www.chuimin.cn)

对于post方法的请求,Ajax将传送的参数用“utf-8”编码,所以,在doPost()中要用语句“request.setCharacterEncoding("utf-8");”将字符的编码方式设为“utf-8”;对于get方法的请求,要传送的参数附加在地址后,用“gbk”编码,所以,在doGet()中要用语句“request.setCharacterEncoding("gbk");”将字符的编码方式设为“gbk”。否则,汉字的传输将变成乱码。

使用“记事本”输入如下“checkLogin.java”程序并存放在“WEB-INF/classes/test”目录中:

checkLogin.java:

978-7-111-38219-5-Chapter05-6.jpg

978-7-111-38219-5-Chapter05-7.jpg

请求调用“checkLogin.java”的URL形式的配置请见“实训46:(2)Servlet程序的配置调用”。

6)conOracle.java程序与“实训48”中的一致。

7)上面1)至6)正确完成后,在浏览器地址栏中输入:

http://192.168.2.1:8080/E49/login.htm

填入正确的用户名和密码,显示的页面如图5-1所示。填入错误的用户名或密码,显示的页面如图5-2所示。

8)若异步请求的是jsp程序(如4)中“login.htm”注释中说明的那样),下面的“test.jsp”简单演示了响应“login.htm”异步请求,读取异步请求传送的用户名和密码,并将用户名回送给“login.htm”。当然,也可以在“test.jsp”中连接数据库,与数据库中的用户名和密码比对后回送相应的信息。

978-7-111-38219-5-Chapter05-8.jpg

图5-1 无刷新判断用户名和密码(正确)

978-7-111-38219-5-Chapter05-9.jpg

图5-2 无刷新判断用户名和密码(错误)

test.jsp:

978-7-111-38219-5-Chapter05-10.jpg