Action类里:

/*
* 登录
*/
public ActionForward doLogin(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws IOException
{ //获得表单数据
int uid=Integer.parseInt(request.getParameter("petID"));
String pwd=request.getParameter("pwd");
PrintWriter out=response.getWriter();
//根据ID获得其信息
PetInfo info=petInfoBiz.getPetInfoByID(uid);
if(info==null)
{
out.print(0);
return null;
}
else if(!petInfoBiz.login(uid, pwd))
{
out.print(1);
return null;
}
else if(petInfoBiz.login(uid, pwd))
{
out.print(2);
return null;
} return null;
}

页面的javascript部分(没有使用框架):

//根据IE的类型创建一个XmlHttpRequest对象
function createXmlHttpRequest()
{
if(window.ActiveXObject)
{
return new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
return new XMLHttpRequest;
}
} var xmlHttpRequest;
//根据宠物编号发送请求到服务器
function requestServer()
{
var loginState=document.getElementById("loginState");
with(document.petForm)
{ if(petID.value=="")
{
loginState.innerText="请填写宠物编号!";
}
else if(isNaN(petID.value))
{
loginState.innerText="编号不合法";
}
else if(pwd.value=="")
{
loginState.innerText="请填写密码";
}
else
{
var url="doPetInfo.do?methodName=doLogin&petID="+petID.value+"&pwd="+pwd.value;
//创建XMLHttpRequest组件
xmlHttpRequest=createXmlHttpRequest();
//设置回调函数,让其等待服务器的响应
xmlHttpRequest.onreadystatechange=doLogin;
//初始化xmlHttpRequest组件,传入URL
xmlHttpRequest.open("GET",url,true);
//发送请求
xmlHttpRequest.send(null);
}
}
}
//登录,获得服务器返回的信息并做出相应提示
function doLogin()
{
var loginState=document.getElementById("loginState");
if(xmlHttpRequest.readyState==0)
{
loginState.innerText="未初始化...";
}
if(xmlHttpRequest.readyState==1)
{
loginState.innerText="初始化中...";
}
if(xmlHttpRequest.readyState==2)
{
loginState.innerText="正在向服务器发送请求...";
}
if(xmlHttpRequest.readyState==3)
{
loginState.innerText="正在验证登录信息...";
}
if(xmlHttpRequest.readyState==4)
{
loginState.innerText="验证完成...";
}
if(xmlHttpRequest.readyState==4 && xmlHttpRequest.status==200)
{
var text=xmlHttpRequest.responseText;
if(text=="0")
{
loginState.innerText="此ID不存在";
}
else if(text=="1")
{
loginState.innerText="密码错误";
}
else if(text=="2")
{
loginState.innerText="验证成功...";
location.href="doPetInfo.do?methodName=doInit&petID="+document.petForm.petID.value;
}
}
}

表单部分:

<span id="loginState" style="color:red"></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
宠物ID:<input type="text" name="petID" size="6" value="">
密码:<input type="password" name="pwd" size="6" value="">&nbsp;&nbsp;&nbsp;&nbsp;
<button onclick="requestServer()">登录</button>&nbsp;&nbsp;

Ajax+Struts做登录判断的更多相关文章

  1. ajax技术实现登录判断用户名是否重复以及利用xml实现二级下拉框联动,还有从数据库中获得

    今天学了ajax技术,特地在此写下来作为复习. 一.什么是ajax? 客户端(特指PC浏览器)与服务器,可以在[不必刷新整个浏览器]的情况下,与服务器进行异步通讯的技术  即,AJAX是一个[局部刷新 ...

  2. express做登录判断

    1)JWT试试 https://github.com/penguinab/express-jwt 2)express session https://github.com/whevether/reac ...

  3. 11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库

    1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...

  4. ajax基础语法、ajax做登录、ajax做用户名验证是否可用、ajax做关键字查询动态显示、ajax做用表格显示数据并增加操作列

    AJAX: AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新.   ...

  5. ajax 做登录 实现页面免刷新

    结合之前学的知识,可以用ajax来传递数据,实现页面不用刷新,仅数据刷新,来看一下ajax是怎么来实现页面免刷新的 方的是客户端,圆的是服务器 如果没有ajax的话,客户端直接把数据传给服务器,服务器 ...

  6. ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库

    1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...

  7. 使用PHP中的ajax做登录页面、验证用户名是否可用、动态调用数据库

    1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...

  8. 14.ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库

    1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...

  9. 11.10 (上午)开课二个月零六天(ajax基础,ajax做登录)

    test.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

随机推荐

  1. 【sqli-labs】 less34 POST- Bypass AddSlashes (POST型绕过addslashes() 函数的宽字节注入)

    还是宽字节注入,POST版本的 uname=1&passwd=1%df' union select 1,2,3# 提交报错 列名不匹配,改一下就好了 uname=1&passwd=1% ...

  2. 偏函数应用(Partial Application)和函数柯里化(Currying)

    偏函数应用指的是固化函数的一个或一些参数,从而产生一个新的函数.比如我们有一个记录日志的函数: 1: def log(level, message): 2: print level + ": ...

  3. Vue 爬坑之路—— 使用 Vuex + axios 发送请求

    Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios  ...

  4. EMC VNX5200/5400存储 新增LUN与Hosts映射操作

    EMC VNX5200/5400 1.创建RAID  Groups 1.1        进入EMC VNX5200/5400主界面,依次选择Storage——Storage Pools——RAID ...

  5. EL截取url中参数

    function getUrlString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*) ...

  6. Ubuntu安装RTX2080显卡驱动

    安装RTX2080显卡驱动 近日新购了一台DELL服务器,用于TensorFlow,由于显卡是另加的,需要安装显卡驱动. 服务器配置 服务器型号:DELL PowerEdge R730 CPU:2*I ...

  7. 编写 Shell 脚本的最佳实践

    转自:http://kb.cnblogs.com/page/574767/ 前言 由于工作需要,最近重新开始拾掇shell脚本.虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看 ...

  8. 为类型定义取别名、环境变量、静态库与动态库(day03)

    一.为类型命名别名 struct node{ int num; struct node *next; }; typedef struct node node_t; node_t n; 使用typede ...

  9. 洛谷P1478 陶陶摘苹果(升级版)【水题】

    又是一年秋季时,陶陶家的苹果树结了n个果子.陶陶又跑去摘苹果,这次她有一个a公分的椅子.当他手够不着时,他会站到椅子上再试试. 这次与NOIp2005普及组第一题不同的是:陶陶之前搬凳子,力气只剩下s ...

  10. 49.filter、query比较

    主要知识点 1.filter与query用在同一次查询中的语法 2.filter与query使用场景对比 3.二都的性能比较     一.filter与query示例 1.先准备数据 PUT /com ...