当前位置: 首页 > news >正文

ajax验证用户名是否可用

Ajax很简单(jsp例子)  

 

首先是jsp页面和脚本,为了方便写在一个里面

这是一个很常见的检测用户名是否存在的功能

这里用的是struts ,可以在路径path中加加上要传的值name 在action中连接数据库 验证是否存在

--------------------------------------------------------------------------------

<%@ page contentType="text/html; charset=GBK" %>

<html>

<head>

<title>

ajax

</title>

</head>

<body bgcolor="#ffffff">

<h1>

<input name="username" type="text" maxlength="20" />

<input id="chk-name-btn" type="button" value="检测帐号" οnclick="testName(’<%=request.getContextPath()%>’)" />

<div id="view_name"></div>

</h1>

</body>

</html>

<script language="javascript">

   if (window.ActiveXObject && !window.XMLHttpRequest) {

       window.XMLHttpRequest=function() {

       return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf(’msie 5’) != -1) ? ’Microsoft.XMLHTTP’ : ’Msxml2.XMLHTTP’);

    };

   }//取得XMLHttpRequest对象

function testName(path){

//path是取得系统路径

                 var view_name=document.getElementById("view_name");

       var req=new XMLHttpRequest();

       if (req) {

           req.onreadystatechange=function() {

            if (req.readyState==4 && req.status==200) {//判断状态,4是已发送,200已完成

                  if(req.responseText==0){

                  view_name.style.color=’green’;

                 view_name.innerHTML=’该用户名可以正常使用’;

                  }else if(req.responseText==1){

                 view_name.style.color=’red’;

                    view_name.innerHTML=’该用户名已经被使用’;

                        }else{

                      view_name.style.color=’red’;

                      view_name.innerHTML=’该用户名含有非法字符!’;

                      }

                  }

          }

                         req.open(’POST’, path+’/ajax.do’);//struts

                        //req.open(’POST’, path+’/ajax.servlet’);//servlet

                         //req.open(’POST’, path+’/ajax.action’);//webwork

                           req.setRequestHeader(’Content-Type’, ’application/x-www-form-urlencoded’);

                           req.send("");//发送参数如果有参数req.send("username="+user_name);用request取得

       }

}

</script>

这个jsp页面并没有取得用户名,就是演示一下。还有<div>可以换span,具体作用问美工吧。

接受ajax请求的action。

import org.apache.struts.action.*;

import javax.servlet.http.*;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.PrintWriter;

/**

* <p>Title:AjaxAction </p>

*/

public class AjaxAction extends Action {

   public ActionForward execute(ActionMapping mapping,

                                ActionForm form,

                                HttpServletRequest request,

                                HttpServletResponse response)

       throws Exception {

     PrintWriter out = response.getWriter();

     out.print(1);//ajax取得都是字符的输出。如果数据量大的话,还可以用xml来发送和接受

     return null;

   }

}

struts-config.xml

     <action type="test.whw.upload.AjaxAction" validate="false" scope="request"   path="/ajax"/>

----------------------------

如果是servlet

web.xml

<servlet>

   <servlet-name>AjaxServlet </servlet-name>

   <servlet-class>servlet.AjaxServlet </servlet-class>

</servlet>

     <servlet-mapping>

         <servlet-name>AjaxServlet </servlet-name>

         <url-pattern>/AjaxServlet .servlet</url-pattern>

     </servlet-mapping>

AjaxServlet.java

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class AjaxServlet extends HttpServlet {

Logger log = Logger.getLogger(this.getClass());

public void doGet(HttpServletRequest request, HttpServletResponse response)

    throws ServletException,IOException {

   response.setContentType("text/xml; charset=GBK");

   PrintWriter out = response.getWriter();

     out.print(2);

    }

}

//Process the HTTP Post request

public void doPost(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

   doGet(request, response);

}

//Process the HTTP Put request

public void doPut(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

}

//Process the HTTP Delete request

public void doDelete(HttpServletRequest request,

    HttpServletResponse response) throws ServletException, IOException {

}

//Clean up resources

public void destroy() {

}

}

-------------------------------------

如果是webwork

xwork.xml

    <action name="ajax" class="com.whw.upload.action.webwork.AjaxAction" method="ajax"/>

AjaxAction.java

import java.io.PrintWriter;

public class AjexAlbumAction extends ActionSupport implements Action{

   public void ajax()throws IOException {

              PrintWriter pw = ServletActionContext.getResponse().getWriter();

             ServletActionContext.getResponse().setContentType("text/html;charset=GBK");

             pw.print(1);

             pw.close();

   }

}  

 

相关文章:

  • 正则表达式限制表单文本框输入内容
  • 正则表达式详解
  • js中innerHTML,innerText,outerHTML的用法与区别
  • Struts防止重复提交
  • html:multibox 的使用
  • Ie和firefox的Js区别
  • 软件工程师不可不知的10个概念
  • MySQL的数据类型
  • java.sql.date 与 java.util.date
  • JAVA日期类型
  • jsp页面添加行
  • 放大镜
  • 分页css样式
  • struts2+spring+hibernate分页
  • 一个实用的JSP分页
  • [case10]使用RSQL实现端到端的动态查询
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【笔记】你不知道的JS读书笔记——Promise
  • 0x05 Python数据分析,Anaconda八斩刀
  • 2017 年终总结 —— 在路上
  • iOS | NSProxy
  • maven工程打包jar以及java jar命令的classpath使用
  • maya建模与骨骼动画快速实现人工鱼
  • ng6--错误信息小结(持续更新)
  • React-flux杂记
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • windows下使用nginx调试简介
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 观察者模式实现非直接耦合
  • 记一次用 NodeJs 实现模拟登录的思路
  • 批量截取pdf文件
  • 前端技术周刊 2018-12-10:前端自动化测试
  •  一套莫尔斯电报听写、翻译系统
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • k8s使用glusterfs实现动态持久化存储
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #define
  • #Linux(make工具和makefile文件以及makefile语法)
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (14)Hive调优——合并小文件
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (黑马C++)L06 重载与继承
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)一些感悟
  • (转载)从 Java 代码到 Java 堆
  • ***通过什么方式***网吧
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .net 托管代码与非托管代码
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .net反编译工具
  • .NET中统一的存储过程调用方法(收藏)