JSp+ajax用户登录验证

问题描述

用户登陆界面,想要实现输入账号之后离开输入框就验证该账号是否存在,输入角色、账号、密码之后,点击登录,如果正确就跳转到index.jsp,错误不跳转并且在密码输入框下显示提示信息;有一个没输入就提示,信息也是在密码输入框下。我现在的问题是:若果什么也不输,点击登录,会闪一下,但闪过之后就是重置了页面。输入正确也是闪一下就重置页面.账号验证没问题,就是登录有问题,但是搞不定,大侠们看看吧! login.jsp<form id="form" name="form" method="post" action="" ><table border="0"><tr><td align="right">角色类型:</td><td><select name="role" id="role" onBlur="checkRole(this)"><option value="0">-请选择角色-</option><%List<Role> list = new ArrayList<Role>();RoleDao dao = new RoleDaoImpl();list = dao.findAllRoles();//调用实现类的查询全部方法for (int i = 0; i < list.size(); i++) {Role r = list.get(i);%><option value="<%=r.getR_id()%>"><%=r.getR_name()%></option><%}%></select></td><td align="left"> &nbsp; <span id="roleSpan"></span> </td></tr><tr><td align="right">账号:</td><td><input type="text" name="number" id="number" onblur="checkNumber(this)"></td> <td width="256" align="left"> &nbsp; <span id="numberSpan"></span> </td></tr><!-- 当输入名字后离开输入框即调用--><tr><td align="right">密码:</td><td><input type="password" name="pwd" id="pwd" onBlur="checkPsw(this)" ></td><td align="left"> &nbsp; <span id="pwdSpan"></span> </td></tr><tr> <td align="left">&nbsp;<span id="feedback_info"></span></td></tr><tr><td colspan="1"> <input type="submit" value="登录" onclick="checkLogin(this.form)"/> <input type="button" value="注册"onclick="javascript:window.location.href='User/Register.jsp'"></td></tr></table></form>login.jsvar xmlHttp; function createXMLHttpRequest() { if (window.XMLHttpRequest) { var xmlHttp = new XMLHttpRequest(); //mozilla浏览器 } else if (window.ActiveXObject) { try { var xmlHttp = new ActiveX0bject("Msxml2.XMLHTTP"); //IE老版本 } catch (e) { } try { var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE新版本 } catch (e) { } } if (!xmlHttp) { window.alert("不能创建XMLHttpRequest对象实例"); return false; } else return xmlHttp; ////}///////花括号放错地方 } // 检查账号,给出提示信息 function checkNumber(Number) { var numberSpan = document.getElementById("numberSpan"); if (Number.value == "") { numberSpan.innerHTML = "账号必须填写".fontcolor("red"); return false; } else { xmlHttp = createXMLHttpRequest(); //createXMLHttpRequest申明的是局部变量,这里访问不到xmlHttp,要给xmlHttp变量赋值才行 var url="servlet/CheckNumberServlet?number="+Number.value+"&LoginTime="+new Date().getTime(); url = encodeURI(url); //转换码后再传输 xmlHttp.open("GET",url,true);//加时间戳防止IE缓存 //xmlhttp.setRequestHeader( "Content-Type", "text/html;charset=UTF-8" ); xmlHttp.onreadystatechange = handleStateChange1; xmlHttp.send(null); return true; } } function handleStateChange1() { var numberSpan = document.getElementById("numberSpan"); if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { // alert("来自服务器的响应:"+xmlHttp.responseText); if (xmlHttp.responseText == 'true') {///////responseText是字符串,不能和boolean变量直接比较 // alert("存在"); numberSpan.innerHTML = "<img src='Img/g.gif'>"; document.getElementById("feedback_info").innerHTML=""; return true; } else if (xmlHttp.responseText == 'false') {///////responseText是字符串,不能和boolean变量直接比较 // alert("不存在"); numberSpan.innerHTML = "账号不存在".fontcolor("red"); return false; } } else alert("服务器端错误"); } } // 检查密码,给出提示信息 function checkPsw(pswNode) { var spanNode1 = document.getElementById("pswSpan"); var Role= document.getElementById("role"); var Number= document.getElementById("number"); if (pswNode.value == "") { spanNode1.innerHTML = "密码必须填写".fontcolor("red"); return false; } else { pwdSpan.innerHTML = "<img src='Img/g.gif'>"; document.getElementById("feedback_info").innerHTML=""; return true; } } // 检查是否选中角色 function checkRole(selNode) { var index = selNode.selectedIndex;// 获得选中下标 var spanNode1 = document.getElementById("roleSpan"); if (index <= 0) { spanNode1.innerHTML = "必须选择角色".fontcolor("red"); return false; } else { spanNode1.innerHTML = "<img src='Img/g.gif'>"; document.getElementById("feedback_info").innerHTML=""; return true; } } // 检查表单 function checkLogin(o) { var Role=o.role; var Number= o.number; var Pwd= o.pwd; if(checkNumber(Number)&&checkPsw(Psw) &&checkRole(Role)) { xmlHttp = createXMLHttpRequest(); //createXMLHttpRequest申明的是局部变量,这里访问不到xmlHttp,要给xmlHttp变量赋值才行 var url="servlet/CheckLoginServlet?number="+Number.value+"&role="+Role.value+"&pwd="+Pwd.value+"&LoginTime="+new Date().getTime(); url = encodeURI(url); //转换码后再传输 xmlHttp.open("GET",url,true);//加时间戳防止IE缓存 //xmlhttp.setRequestHeader( "Content-Type", "text/html;charset=UTF-8" ); xmlHttp.onreadystatechange = handleStateChange2; xmlHttp.send(null); return true; } else{ document.getElementById("feedback_info").innerHTML="请填写每一项".fontcolor("red"); return false; } } function handleStateChange2() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { //alert("来自服务器的响应:" + xmlHttp.responseText); if(xmlHttp.responseText == '0'){ document.getElementById("feedback_info").innerHTML="账号与密码不匹配".fontcolor("red"); return false; } else if(xmlHttp.responseText == '1'){ document.getElementById("feedback_info").innerHTML=""; window.location.href="index.jsp"; return true; } } else alert("服务器端错误"); } }chuckLoginservletpublic void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html");doPost(request, response);// 调用doPost方法}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=UTF-8");String number="";try {number = new String(request.getParameter("number").getBytes("ISO-8859-1"), "UTF-8");} catch (Exception e1) {System.out.println("number为空");}String role="0";int rID=0;try {role = new String(request.getParameter("role").getBytes("ISO-8859-1"), "UTF-8");rID=Integer.parseInt(role);//把获得的role的值转成整型} catch (Exception e1) {System.out.println(request.getParameter("role")+"******role");}String pwd="";try {pwd = new String(request.getParameter("pwd").getBytes("ISO-8859-1"), "UTF-8");} catch (Exception e) { System.out.println(request.getParameter("pwd")+"****pwd");}// String txt = new String(number.getBytes("ISO-8859-1"), "UTF-8");// System.out.println(txt+"********");PrintWriter out = response.getWriter();User u = new User();UserDao ud = new UserDaoImpl();u = ud.findUserByNumber(number);//通过账号找到用户对象if (u != null) {// 找到该用户int u_id = u.getU_id();// 获得该用户的IDUserRole ur = new UserRole();UserRoleDao urd = new UserRoleDaoImpl();ur = urd.findUserRoleByUserId(u_id);// 找到中间表UserRole的记录int r_id = ur.getRole().getR_id();// 由Userrole表找到Role表的相对应角色名称if (r_id==rID && u.getU_password().equals(pwd))// 如果数据中的角色和密码与之对应{out.write("1");//1表示验证通过} else {out.write("0");//0表示密码与账号不匹配}}out.flush();out.close();}

解决方案

checkLogin(this.form)"/> 这里是有问题的,知道this代表什么吗?它是代表input这个对象,而this.form就是代表input里面有一个 form这个属相的值,最关键是你的type="submit" 这个就是提交,而你的表单action都是空的,所以那里都没提交上去你这里有四个错误
解决方案二:
var Role=document.getElementById("role"); var Number=document.getElementById("number"); var Pwd=document.getElementById("pwd");其它地方也需要改呀if(checkNumber(Number)&&checkPsw(Psw) &&checkRole(Role)) 这里改了吗你上面获得是对象,并且Number这个是js的内置数字对象,不要使用,另外改个名字最好可以改为 var roleValue=document.getElementById("role").value; var num=document.getElementById("number").value; var pwd=document.getElementById("pwd").value;然后if(checkNumber(num)&&checkPsw(pwd) &&checkRole(roleValue)) 所以都需要修改呀,还有可能其它地方也需要修改,注意下

时间: 2024-11-03 05:06:35

JSp+ajax用户登录验证的相关文章

jQuery.ajax 用户登录验证代码_jquery

复制代码 代码如下: $.ajax({ type: "post", url: "Handler1.ashx", data: { username: "admin", password: "123" }, success: successHandle }); function successHandle(rep) { $("#msg").html(rep); }

用spring springMVC mybatis实现用户登录验证,成功登录后显示用户数据

问题描述 用spring springMVC mybatis实现用户登录验证,成功登录后显示用户数据 ? 登陆成功后,将所有用户数据展示给用户,列出用户详细信息,并分页.用拦截器判断,如果没有登陆的话返回登陆页面并提示用户没有登陆 配置全部都写好了 求大神给写个 登录验证的页面 跟 登录成功后的页面 万分感谢! 急!!! 解决方案 http://download.csdn.net/detail/fengqilove520/8405907 解决方案二: SpringMVC + Mybatis 实现

ASP.NET MVC3 实现用户登录验证

原文:ASP.NET MVC3 实现用户登录验证 自定义一个授权筛选器类,继承于AuthorizeAttribute: using System; using System.Web; using System.Web.Mvc; namespace MvcApplication1 { public class DWAuthorizeAttribute : AuthorizeAttribute { /// <summary> /// 判断用户是否登录 /// </summary> //

JSP实现用户登录、注册和退出功能_JSP编程

本文讲述使用JSP实现用户登录,包括用户登录.注册和退出功能等. 1.系统用例图 2.页面流程图 3.数据库设计本例使用oracle数据库 创建用户表 包括id,username,password和email,共4个字段 -- Create table create table P_USER ( id VARCHAR2(50) not null, username VARCHAR2(20), password VARCHAR2(20), email VARCHAR2(50) ) tablespa

使用JSP实现用户登录

本文讲述使用JSP实现用户登录,包括用户登录.注册和退出功能等. 1.系统用例图 2.页面流程图 3.数据库设计 本例使用oracle数据库 创建用户表 包括id,username,password和email,共4个字段   [sql] view plain copy   -- Create table   create table P_USER   (     id       VARCHAR2(50) not null,     username VARCHAR2(20),     pas

JSP实现用户登录样例

业务描述 用户在login.jsp页面输入用户名密码登录: 如果用户名为xingoo,密码为123,则跳转到成功界面login_success.jsp,并显示用户登录的名字: 如果用户名密码错误,则跳转到失败界面login_failure.jsp,并提示返回登录界面. login.jsp代码 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="ut

利用Spring IOC技术实现用户登录验证机制_java

利用 Spring IOC 技术实现用户登录的验证机制,对用户进行登录验证. 首先利用 Spring 的自动装配模式将 User 对象注入到控制器中,然后将用户输入的用户名和密码与系统中限定的合法用户的用户名和密码进行匹配. 当用户名与密码匹配成功时,跳转到登录成功页面:当用户名与密码不匹配时,跳转到登录失败的页面. 1.创建 User 对象,定义用户名和密码属性,代码如下: package com.importnew; public class User { private String us

php ajax 用户登录退出

本例我们使用Mysql数据库,创建一张user表,表结构如下:  代码如下 复制代码 CREATE TABLE `user` (   `id` int(11) NOT NULL auto_increment,   `username` varchar(30) NOT NULL COMMENT '用户名',   `password` varchar(32) NOT NULL COMMENT '密码',   `login_time` int(10) default NULL COMMENT '登录时

asp.net jQuery Ajax用户登录功能的实现_实用技巧

主页面调用代码片段: 复制代码 代码如下: <asp:HyperLink ID="lnkLogin" runat="server" NavigateUrl="#" >登录</asp:HyperLink> <script language="javascript" type="text/javascript"> $('#<%=this.lnkLogin.ClientI