基于ajax的简单的登录验证_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3507 | 回复: 0   主题: 基于ajax的简单的登录验证        下一篇 
lei.zhou
注册用户
等级:少尉
经验:326
发帖:2
精华:0
注册:2012-11-12
状态:离线
发送短消息息给lei.zhou 加好友    发送短消息息给lei.zhou 发消息
发表于: IP:您无权察看 2012-11-19 14:20:12 | [全部帖] [楼主帖] 楼主

基于ajax的简单的登录验证 .
2010-07-15 22:46 96人阅读 评论(2) 收藏 举报
  Ajax是多种技术的集合(Asynchronous JavaScript and XML)

     1.JavaScript负责操作XMlHttpRequest对象来跟数据库打交道
   2.DOM(文档对象模型)负责数据的动态显示和交互
   3.XML(可扩展标识语言)负责数据的交换和处理
   4.XMLHttpRequest负责数据的异步读取
   5.XHTML(可扩展超文本标记语言)和CSS(层叠样式表)编写结构化的web页面
   6.json
   优点
   1.无刷新请求处理数据。
   缺点
  1.要求IE5.0,Mozilla1.0,NetScape7以上。
  2.对流媒体和PDA之类的支持不是很好。

Ajax的一般流程(Request/Server模式)
对象初始化--->发送请求--->服务器接受--->服务器响应并返回--->客户端接受--->修改客户端页面内容

首先写一个JSP页面(里面包含JS代码),如下:

Code:
01.<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
02.<html>
01. <head>
02. <title> 登录页面 </title>
03. <link rel=stylesheet href="css/login.css" type="text/css">
04. <script type="text/javascript">
05. //声明一个全局的XMLHttpRequest对象  
06. var xmlhttp_request;
07. //声明一个标签  
08. var message;
09. function check(){
10. var username=document.getElementById("usernameID").value;
11. message=document.getElementById("message");


12.  message.innerHTML="正在检测用户名.....";  

13. try{
      14.//用于获取支持IE浏览器的XMLHttpRequest对象  
      15.if(window.ActiveXObject){
            16.for( var i = 5;i; i-- ){
                  17.try{
                        18.if( i == 2 ){
                              19.xmlhttp_request = new ActiveXObject("Microsoft.XMLHTTP");//大于5.0     
                              01.//
                              02.alert("1:"+xmlhttp_request.readyState);
                        03.}
                        04.else{
                              05.xmlhttp_request = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );////3.0或4.0, 5.0   
                              01.xmlhttp_request.setRequestHeader("Content-Type","text/xml");
                              02.xmlhttp_request.setRequestHeader("Charset","gb2312");
                        03. }
                        04. break;
                  05. }catch(e){
                  06. xmlhttp_request = false;
            07. }
      08. }
09. }
10. else if(window.XMLHttpRequest)//非IE浏览器Mozilla﹑Netscape﹑Safari等浏览器   
11. {
      12. xmlhttp_request = new XMLHttpRequest();
      13. if (xmlhttp_request.overrideMimeType){
            14. xmlhttp_request.overrideMimeType('text/xml');
      15. }
16. }
17. }
18. catch(e){
19. xmlhttp_request = false;
20.}
21.//打开一个连接  
22.alert("2:"+xmlhttp_request.readyState);
23.alert(username);
24.//xmlhttp_request.open("get","http://localhost:8080/ajax/check?name="+username,true);
25.xmlhttp_request.open("post","http://localhost:8080/ajax/check",true);
26.//POST请求要设置请求头  
27.xmlhttp_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
28.//指定处理服务器端相应的函数  
29.alert("3:"+xmlhttp_request.readyState);
30.xmlhttp_request.onreadystatechange=handle;
01.//get发送请求  
02.//xmlhttp_request.send(null);
03.//post发送请求  
04.xmlhttp_request.send("name="+username);
05.}
06.
07.function handle(){
      08.alert("4:"+xmlhttp_request.readyState);
      09.if(xmlhttp_request.readyState==4){
            10.alert(xmlhttp_request.status);
            11.if(xmlhttp_request.status==200){
                  12.var result=xmlhttp_request.responseText;
                  13.alert(result);
                  14.message.innerHTML=result;
                  01.alert("5:"+xmlhttp_request.readyState);
            02.}
      03.}
04.}
05.
06. </script>
07. </head>
08. <body>
09. <h1 align="center">用户登录页面</h1>
10. <hr color="blue">
11. <div align="center">
12. <form action="login.do" method="post">
13. <table cellspacing=5 border=5 bodercolor=#ffaa00 >


14.   <tr><th colspan="3" align="center"  bgcolor=#ffaa00>用户登录</th></tr> 

15.   <tr>
16.   <th rowspan="3" background="images/2.jpg" style="width=90px"></th>


17.   <td>用户名:</td><td><input id="usernameID" type="text" class="message" name="username" onBlur="check()"><label id="message"></label></td></tr> 
18.   <tr><td>密  码:</td><td><input id="userpasswordID" class="message" type="password" name="userpassword" ></td></tr> 
19.    <tr><td colspan="2" align="center"><input type="submit" value="注册">  <input type="reset" value="重置"></td></tr> 

20.   </table>
21.   </form>
22.   </div>
23.  </body>
24.</html>


本页面中的重点就是js代码中的xmlhttp_request对象,它是XMLHTTP组件的对象,XMLHttpRequest对象在大部分浏览器上已经实现而且拥有一个简单的接口允许数据从客户端传递到服务端,但并不会打断用户当前的操作。使用XMLHttpRequest传送的数据可以是任何格式,虽然从名字上建议是XML格式的数据。

接下来我们写一个写一个serlet来处理xmlhttp_request对象发送过来的数据,当前例子传送的数据为username的值,如下:

Code:
01.package myclass.serlet;
02.
03.import java.io.IOException;
01.import java.io.PrintWriter;
01.
02.import javax.servlet.ServletException;
01.import javax.servlet.http.HttpServlet;
01.import javax.servlet.http.HttpServletRequest;
01.import javax.servlet.http.HttpServletResponse;
01.
02.public class Check extends HttpServlet {
      01.
      02. protected void service(HttpServletRequest request, HttpServletResponse response)
      03. throws ServletException, IOException {
            04. //输出流  
            05. PrintWriter out=null;
            06. out=response.getWriter();
            07. String name=request.getParameter("name");
            08. System.out.print(name);
            09. if("liping".equals(name)){
                  10. out.println("sorry,user name:"+name+" has existed");
            11. }else{
            12. out.println("congratulation,user name: "+name+" can use");
      13. }
      14. out.flush();
      15. out.close();
16. }
17.}


servlet中使用printwriter输出流来向客户端返回处理结果,前面JS中使用function handle()函数来处理,这样就实现了AJAX局部刷��。用户在填写用户名后,光标一离开,就产生一个onchange()事件,用户名的值就立刻通过xmlhttp_request对象对值传到servlet中进行验证,验证后马上把信息返回,显示到页面,实现了局部刷新的效果。

这就是AJAX。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论