jsp+ajax实例

下面介绍JSP前台表单内容通过Ajax异步提交到后台Servlet进行校验(校验方式多种,包括提取数据库信息,校验用户名是否重复等),异步在JSP表单页面显示校验结果信息的基本过程。 

一、说明: 

       1.由于本文只限于介绍JSP+Servlet+Ajax运用的基本流程,重点不在于后台数据库的访问和校验内容,因此省略Servlet对数据库的访问。 

二、基本流程: 

      1. JSP页面login.jsp提供一个表单“form”,表单中有两个“text”类型的输入框,其中我们将用第一个输入框来做实验。 

        在第一个输入框中(输入用户名),通过onblur=validate();,当用户光标离开输入框时,触发JS函数validate() ,函数validate()在Ajax.js文件中声明。

Html代码   收藏代码
  1. <%@page contentType="text/html" pageEncoding="UTF-8"%>  
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
  3.     "http://www.w3.org/TR/html4/loose.dtd">  
  4.   
  5. <html>  
  6.     <head>  
  7.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  8.         <script type="javascript" src="Ajax.js"></script>        
  9.     </head>  
  10.     <body>  
  11.         <h1>Test Ajax</h1><p>  
  12.         <form action="" method="get" name="form">  
  13.             <br>  
  14.             输入用户名:  
  15.             <input type="text" size="10" maxlength="8" id="userName" name="name" onblur="validate()">  
  16.             <span id="info"></span>  
  17.             <br>  
  18.             输入商品名:  
  19.             <input type="text" size="10" maxlength="8" >  
  20.         </form>  
  21.     </body>  
  22. </html>  

 
       

2、Ajax.js文件声明了一系列函数,用于完成向表单与servlet的中接处理。 


2.1、函数validate()要点: 

        2.1.1、通过document.getElementById(String id)获取表单中有特定id值的输入框的值,即获取用户输入的用户名。 

        2.1.2、声明一个变量url,存放要访问的servlet:"validate.do?id=" + escape(idField.value),问号?后面表示在url后添加一个值,这个值在validate.do这个servlet中可以通过request.getParameter("id")来获取。

Js代码   收藏代码
  1. var url = "validate.do?id=" + escape(idField.value);  

  

       2.1.3、 通过if()语句以兼容IE,Firefox等多个浏览器版本的方式创建一个XMLHttpRequest对象。

Java代码   收藏代码
  1. if(window.XMLHttpRequest) {  
  2.     //IE7, Firefox, Opera支持  
  3.     req = new XMLHttpRequest();  
  4. }else if(window.ActiveXObject) {  
  5.     //IE5,IE6支持  
  6.     req = new ActiveXObject("Microsoft.XMLHTTP");  
  7. }  

 

       2.1.4、调用XMLHttpRequest对象函数open()准备向servlet发送请求(此时只是“准备发送”,并没有发送)

Js代码   收藏代码
  1. req.open("GET", url, true);  

  

       2.1.5、 调用XMLHttpRequest对象函数send(param)向servlet发送请求。param参数的值null(关于send()方法使用请另外查阅)

Js代码   收藏代码
  1. req.send(null);  

 


       2.1.6、调用一个触发事件onreadystatechange,每当 readyState 改变时,onreadystatechange 函数就会被执行。readyState有5个可能值:0:请求未初始化(在调用open()之前);1:请求已经提出(调用send()之前);2:请求已经发送(这里通常可以从响应得到内容头部);3:请求处理中(响应中通常有部分数据可用,但是服务器还没有完成响应);4:请求已经完成(可以访问服务器响应并使用它)

Js代码   收藏代码
  1. req.onreadystatechange = callback;  

 

2.2、function callback()要点: 

      2.2.1    XMLHttpRequest.status = 200表示服务器已经成功响应。 

                  通过XMLHttpRequest.responseText获取servlet端的getPrintWriter().write()输出的响应。得到的值是 一个String类型数据。

Js代码   收藏代码
  1. var check = req.responseText;  

 

2.3、通过show()函数输出结果到标签标记的位置。

 

完整的Ajax.js文件:

Js代码   收藏代码
  1. var req;  
  2. function validate() {  
  3.     //获取表单提交的内容  
  4.     var idField = document.getElementById("userName");  
  5.     //访问validate.do这个servlet,同时把获取的表单内容idField加入url字符串,以便传递给validate.do  
  6.     var url = "validate.do?id=" + escape(idField.value);                  
  7.     //创建一个XMLHttpRequest对象req  
  8.     if(window.XMLHttpRequest) {  
  9.         //IE7, Firefox, Opera支持  
  10.         req = new XMLHttpRequest();  
  11.     }else if(window.ActiveXObject) {  
  12.         //IE5,IE6支持  
  13.         req = new ActiveXObject("Microsoft.XMLHTTP");  
  14.     }  
  15.     /* 
  16.      open(String method,String url, boolean )函数有3个参数 
  17.      method参数指定向servlet发送请求所使用的方法,有GET,POST等 
  18.      boolean值指定是否异步,true为使用,false为不使用。 
  19.      我们使用异步才能体会到Ajax强大的异步功能。 
  20.      */  
  21.     req.open("GET", url, true);  
  22.     //onreadystatechange属性存有处理服务器响应的函数,有5个取值分别代表不同状态  
  23.     req.onreadystatechange = callback;  
  24.     //send函数发送请求  
  25.     req.send(null);                  
  26. }  
  27.   
  28. function callback() {  
  29.     if(req.readyState == 4 && req.status == 200) {  
  30.         var check = req.responseText;  
  31.         show (check);  
  32.     }  
  33. }  
  34.   
  35. function show(str) {  
  36.     if(str == "OK") {  
  37.         var show = "<font color='green'>恭喜!!用户名可用!</font>";  
  38.         document.getElementById("info").innerHTML = show;  
  39.     }  
  40.     else if( str == "NO") {  
  41.         var show = "<font color='red'>对不起,用户名不可用!!请重新输入!</font>";  
  42.         document.getElementById("info").innerHTML = show;  
  43.     }  
  44. }  

 
三、servlet处理: 

      重点1:通过以下几行代码设置浏览器不进行Ajax处理页面的缓存(如果出现缓存,将导致一些不可预知的麻烦) 

Java代码   收藏代码
  1. response.setContentType("text/html");  
  2. response.setHeader("Cache-Control", "no-store");  
  3. response.setHeader("Pragma", "no-cache");  
  4. response.setDateHeader("Expires", 0);  

 
       重点2:通过request.getParameter()来获取Ajax传递的参数。

Java代码   收藏代码
  1. String name = request.getParameter("id");  

 

       重点3:通过response.getWriter().write()向Ajax输出参数,在Ajax一端通过var check = XMLHttpRequest.responseText获取参数值。

Java代码   收藏代码
  1. if(name.equals("1")) {  
  2.     out.write("OK");  
  3. }  
  4. else {  
  5.     out.write("NO");  
  6. }  

 
完整的servlet代码:

Java代码   收藏代码
  1. package com.model;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.PrintWriter;  
  5. import javax.servlet.ServletException;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.   
  10.   
  11. public class DoAjaxServlet extends HttpServlet {  
  12.      
  13.     protected void processRequest(HttpServletRequest request, HttpServletResponse response)  
  14.     throws ServletException, IOException {  
  15.         response.setContentType("text/html;charset=UTF-8");  
  16.         PrintWriter out = response.getWriter();  
  17.         try {  
  18.             response.setContentType("text/html");  
  19.             response.setHeader("Cache-Control", "no-store");  
  20.             response.setHeader("Pragma", "no-cache");  
  21.             response.setDateHeader("Expires", 0);  
  22.             String name = request.getParameter("id");  
  23.             if(name.equals("1")) {  
  24.                 out.write("OK");  
  25.             }  
  26.             else {  
  27.                 out.write("NO");  
  28.             }  
  29.         } finally {   
  30.             out.close();  
  31.         }  
  32.     }   
  33.   
  34.     @Override  
  35.     protected void doGet(HttpServletRequest request, HttpServletResponse response)  
  36.     throws ServletException, IOException {  
  37.         processRequest(request, response);  
  38.     }   
  39.   
  40.     @Override  
  41.     protected void doPost(HttpServletRequest request, HttpServletResponse response)  
  42.     throws ServletException, IOException {  
  43.         processRequest(request, response);  
  44.     }  
  45.   
  46.     @Override  
  47.     public String getServletInfo() {  
  48.         return "Short description";  
  49.     }  
  50.   
  51. }  

 

最后,记得在web.xml配置文件中配置这个servlet:

Xml代码   收藏代码
  1. <servlet>  
  2.     <servlet-name>DoAjaxServlet</servlet-name>  
  3.     <servlet-class>com.model.DoAjaxServlet</servlet-class>  
  4. </servlet>  
  5. <servlet-mapping>  
  6.     <servlet-name>DoAjaxServlet</servlet-name>  
  7.     <url-pattern>/validate.do</url-pattern>  
  8. </servlet-mapping>  
在jsp中运用ajax(简单入门) 利用ajax实现局部刷新 本文简单介绍ajax+jsp实现用户名验证demo(这里做了一个前台HTML页面和一个后台Servlet): 总的思路:1.js发送ajax请求,2.jsp页面调用js中的方法,3.匹配servlet来处理请求,4.通过DOM去显示结果。 regedit.html: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 T... 阅读详情

相关推荐

jsp 调用 jsp 的ajax写法 小例子

jsp 调用 jsp 的ajax写法 小例子 没有任何后台代码,纯jsp

JSP+AJAX 不错的例子

一、发送请求的html文件  html:ajax+jsp域名查询<!-- var XMLHttpReq; //创建XMLHttpRequest对象 function createXMLHttpRequest() { if(window.XMLHttpRequest) { //Mozilla 浏览器

李浩荣的专栏 2669

DeepSeek+Dify实战:零代码构建智能SQL生成器

本文详细介绍了如何利用DeepSeek和Dify零代码构建智能SQL生成器,帮助非技术人员通过自然语言查询数据库。文章涵盖从数据准备、知识库设计到Agent配置的全流程,并提供了优化技巧和实际应用案例,显著提升团队数据查询效率。

weixin_29311017的博客 419

JSP+Servlet+Ajax实现后台异步检验用户信息实例

下面介绍JSP前台表单内容通过Ajax异步提交到后台Servlet进行校验(校验方式多种,包括提取数据库信息,校验用户名是否重复等),异步在JSP表单页面显示校验结果信息的基本过程。 一、说明:        1.由于本文只限于介绍JSP+Servlet+Ajax运用的基本流程,重点不在于后台数据库的访问和校验内容,因此省略Servlet对数据库的访问。 二、基本流程:       1. JSP页...

wandering 899

NE564锁相环FM解调电路设计:10.7MHz中频实测与3种失真优化方案

本文详细解析了NE564锁相环在10.7MHz中频FM解调电路中的设计与优化方案。通过分析锁相环技术基础、电路架构设计及典型失真问题,提供了3种有效的失真优化方法,包括限幅增强、VCO频偏补偿和环路滤波优化,显著提升解调性能。文章还涵盖了PCB布局要点和系统测试验证,为高频电子线路设计提供实用参考。

weixin_33314040的博客 350

ZYNQ程序固化实战:从BOOT.bin生成到QSPI/SD卡双启动模式详解

本文详细解析了ZYNQ 7000系列程序固化的完整流程,重点解决了程序断电丢失问题。通过实战演示,从生成BOOT.bin文件到配置QSPI与SD卡双启动模式,逐步指导开发者实现程序在外部存储中的永久驻留,确保产品脱离调试器独立运行。

weixin_29193259的博客 517

ajax实例 jsp,AJAX和JSP混合使用方法实例

AJAX和JSP混合使用方法实例 内容精选换一换分布式数据库中间件(Distributed Database Middleware,简称DDM),是一款分布式关系型数据库。它兼容MySQL协议,采用存储计算分离架构的模式,使得存储层、计算层可以无限扩展,从而拥有了海量数据高并发访问能力。分布式数据库中间件支持的功能如表1所示。在云容器实例中,您可以使用多种方法创建负载,包括使用云容器实例的Cons...

weixin_34061241的博客 452

嵌入式系统启动流程解析:ROM Code、Bootloader与启动代码的协同工作

本文深入解析嵌入式系统从通电到运行的完整启动流程,详细阐述了ROM Code、Bootloader与启动代码三者如何像接力赛般协同工作。ROM Code作为芯片固化的初始引导程序,负责硬件自检并加载Bootloader;Bootloader作为系统总指挥,初始化关键硬件并加载操作系统内核;启动代码则为C语言运行环境铺平道路。理解这三者的分工与协作,是进行系统移植和解决启动问题的关键。

dd012的博客 554

20多个ajax和jsp的实例与效果

http://www.wujianrong.com/archives/2007/05/20jspajax.html ajax+jsp异步无刷新从DB取数据 ajax+jsp草稿自动保存 基于AJAX的分页 滑动显示分页源码 AJAX_JSP 聊天室1_0 源码 显示上传文件的进度条 JSP Tree File Browser servlet+ajax+mysql实现搜索提示

一只独孤的程序猿 8760

[FPGA高速以太网]基于Verilog与1G/2.5G Ethernet PCS/PMA IP核的2.5G UDP通信实战

本文详细介绍了基于FPGA与1G/2.5G Ethernet PCS/PMA IP核实现2.5G UDP通信的完整实战方案。文章以黑金AX7A200开发板为硬件平台,深入讲解了从硬件选型、IP核配置、Verilog测试逻辑编写到系统调试与性能验证的全过程,重点剖析了利用SGMII接口与GTP收发器实现高速数据传输的关键技术与避坑指南,为FPGA高速以太网应用开发提供了宝贵经验。

sql99的博客 571

使用HART Server PC软件进行HART设备的组态、调试和分析的完整指南

HART协议是一种用于工业自动化中的双向通信协议,能够在4-20mA模拟信号的基础上叠加数字信号,从而实现设备的远程监控和管理。HART协议兼具模拟和数字通信的优点,被广泛应用于过程控制系统中。设备组态:通过软件可以对HART设备进行组态,配置设备参数。设备调试:支持设备的在线调试和故障诊断,方便快速解决问题。数据分析:提供设备运行数据的实时监控和历史数据分析功能。报表生成:支持生成各类报表,便于数据记录和管理。

qq_38334677的博客 2471

php ajax网站开发典型实例,JSP+Ajax网站开发典型实例 PDF_源雷技术空间

资源名称:JSP+Ajax网站开发典型实例 PDF第1章 JSP基础实例实例1 JSP测试页面实例2 登录界面制作实例3 request对象获取客户端参数实例4 列表框在页面交互中的应用实例5 JSP页面显示课程表实例6 获取Cookie对象保存页面信息实例7 使用session对象的简易购物车实例8 application对象实现网站计数器实例9 使用JSP读取TXT格式文件实例10 使用JSP...

weixin_39686230的博客 168

软件测试面试题之易错题

(1)白盒测试:又称功能功能 测试、数据驱动测试和行为测试,是一种从用户观点出发的测试,被测程序为黑盒子, 通过测试来检测每个功能是否能够正常使用。(2)黑盒测试:又称结构测试和逻辑驱动 测试,是知道产品内部工作过程,通过测试来检测产品内部动作是否按照规格说明书 的规定去正常运行。(1)、测试需求分析;(2)动态白盒测试:需要对各个模块功能、模块间的接口、局部数据结构、主要执行路径、 错误处理等方面的测试。(2) 集成测试所测试的对象是模块间的接口,其目的是在找出在模块接口上面,包括整体体系结构上的问题;

m0_37449634的博客 679

AJAX实例入门(JSP)

 基于Servlet的AJAX  这是一个很常见的UI,当用户在第一个选择框里选择ZHEJIANG时,第二个选择框要出现ZHEJIANG的城市;当用户在第一个选择框里选择JIANGSU时,第二个选择框里要出现JIANGSU的城市。  首先,我们来看配置文件web.xml,在里面配置一个servlet,跟往常一样:xmlns="http://java.sun.com/xml/ns/j

1065

使用MATLAB和Simulink来设计并仿真一个智能家居火灾报警系统

智能家居火灾报警系统旨在通过烟雾传感器、温度传感器等设备监测家庭环境,一旦检测到异常情况(如烟雾或温度骤升),立即触发警报并采取相应措施。在这个教程中,我们将使用MATLAB和Simulink来设计并仿真一个智能家居火灾报警系统,包括数据采集、处理以及响应机制。

amy_mhd的博客 162

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jsp ajax实例讲解

下面介绍JSP前台表单内容通过Ajax异步提交到后台Servlet进行校验(校验方式多种,包括提取数据库信息,校验用户名是否重复等),异步在JSP表单页面显示校验结果信息的基本过程。  一、说明:         1.由于本文只限于介绍JSP+Servlet+Ajax运用的基本流程,重点不在于后台数据库的访问和校验内容,因此省略Servlet对数据库的访问。  二、基本流程:

WITNESS 2万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

关于AJAX异步处理的简单介绍及原创JSP应用实例

AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。它有机地包含了以下几种技术: Ajax(Asynchronous JavaScript + XML)的定义基于web标准(standards-based presentation)XHTML+CSS的表示; 使用 DOM(Document

sidac的专栏 2207

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

一个简单的ajax+servlert+jsp的完整实例

今天写了人生第一个ajax,绝对简单通俗,一看就懂。 因为路径问题,还搞了半个小时,所以这是一个菜鸟的进阶。不过想想,ajax这种事情半年前就该学会的。半年前在那个接触各种代码的公司实习的时候就该会这个了,可是对新生事物有种畏惧的感觉,这种心理实在是不该。想想实习也有一年左右了,但是学的东西还是很少。毕设更是还没有开始,总之,继续吧,开始忙毕设了,感觉要炸了。下面是今天做得ajax完整的简单的实

lindiwo的博客 1431

jsp+jquery+ajax+json 实例

index.jsp页面代码 My JSP 'index.jsp' starting page function CheckAjax () { if($('#username').val().length==0){ $('.hint').text("用户名不能位空").css({"background-co

slio2008的专栏 1万+

基于JSP的AJAX局部刷新实例

首先是JSP页面 关键是js中的几个函数         My JSP 'index.jsp' starting page      /js/jquery-1.7.2.js">       var xmlHttp;       function createXMLHttpRequest(){           try{

好男儿今生不后悔 3033

java ajax post多文件_基于jsp的AJAX多文件上传的实例

最近的项目开发中,遇到了一个多文件上传的问题,即在不刷新页面的情况下,上传多个文件至服务器。现总结分享如下:本文主要采用了基于jsp的ajax,jquery,servlet等技术。1.upload.jsp点击上传时,调用对应的fileupload函数,通过ajax将文件异步传送到servlet中处理。注意在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文...

weixin_31708613的博客 269

jsp怎么用ajax判断用户是否存在,Ajax验证用户名是否存在的实例代码

jsp页面用户名: js文件夹下的register.js//创建对象function ajaxFunction(){var xmlHttp;try{// 适用于IE7+, Firefox, Chrome, Opera, SafarixmlHttp=new XMLHttpRequest();}catch(e){try{//Internet ExplorerxmlHttp=new ActiveXObj...

weixin_39942995的博客 697
上一篇: 寻找第2小元素
下一篇: java内部类总结
wp21456
博客等级 码龄16年 0粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值