在jsp中运用ajax实现同一界面不跳转处理事件

目前,编写应用程序时有两种基本的选择:

  • 桌面应用程序
  • Web应用程序

它们有什么区别呢?桌面应用程序一般很快(就在您的计算机上运行,不用等待互联网连接),具有漂亮的用户界面(通常和操作系统有关)和非凡的动态性。可以单击、选择、输入、打开菜单和子菜单、到处巡游,基本上不需要等待。而相对而言,Web应用程序是最新的潮流,它提供了在桌面上不能实现的服务(比如 Amazon.com和eBay)。但是,伴随着Web的强大而出现的是等待,等待服务器响应,等待屏幕刷新,等待请求返回和生成新的页面。

Ajax能做什么呢?它就是尝试在Web应用程序中使用像桌面应用程序中常见的那些动态用户界面和漂亮的控件。现在就让我们来看看Ajax如何将笨拙的Web界面转化成能迅速响应的Ajax应用程序吧。

举一个小例子,大家都经常在一些网站注册用户。早几年,这是个不太愉快的经历。简单回想一下吧,在您千辛万苦输入用户名,密码,电子邮箱等一大片个人信息后,点击提交按钮将信息提交到服务器上,然后页面一片空白,您开始痛苦地等待。更不幸的是,您的用户名已经被人家注册过了!这时候您又会回到原先的注册页面,而前面填写过的信息已经荡然无存,您又开始陷入重新填写,提交,等待的循环,直到所填写的信息全部通过服务器端验证……这对您的耐心真是一种莫大的考验!您已经受够了。

幸好,AJAX横空出世。有了它,一切都不一样啦。当您输入注册名并点击旁边的一个验证按钮后,可以立刻在输入框的后面无刷新地显示该用户名是否被注册。哈哈,您被拯救了!那么,它是怎么做到的呢?其实道理非常简单,它就是通过客户端脚本,判断您已经输入了用户名,然后去创建一个组件(XMLHTTP),异步地将用户名提交到服务器检测,服务器会把检测结果输出给客户端组件,那么客户端组件在知道结果后,就可以通过DOM去显示结果。我们不明白这个不要紧,先来看ajax应用的第一个demo(这里做了一个前台HTML页面和一个后台Servlet):

regedit.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script>
var xmlHttpReq;
//创建一个XmlHttpRequest对象
function createXmlHttpRequest()
{
    if(window.XMLHttpRequest)
    {
       xmlHttpReq = new XMLHttpRequest();//非IE浏览器
    }else
    {
       xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器
    }
}
//检测用户名是否已经被注册
function checkUser()
{
var username = document.getElementById("user").value;
if(username=="")
{
    alert("用户名必须填写!");
    return false;
}
//首先创建精灵对象
createXmlHttpRequest();
//指明准备状态改变时回调的函数名
xmlHttpReq.onreadystatechange=handle;
//尝试以异步的get方式访问某个URL
//请求服务器端的一个servlet
var url = "check?username="+username;
xmlHttpReq.open("get",url,true);
//向服务器发送请求
xmlHttpReq.send(null);
}
//状态发生改变时回调的函数
function handle()
{
//准备状态为4
    if(xmlHttpReq.readyState==4)
    {
    //响应状态码为200,代表一切正常
       if(xmlHttpReq.status==200)
       {
           var res = xmlHttpReq.responseText;
           var result = document.getElementById("result");
           result.innerHTML = "<font color=red>"+res+"</font>";
       }
    }
}
</script>
</head>
<body>
<center><h1>表单注册</h1></center>
<hr>
姓名:
<input type="text" id="user">
<input type="button" value="检测用户名" onclick="checkUser()">
<span id="result"></span>
</body>
</html>

  Check.java:

package com.wepull.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

 public class Check extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       //解决返回中文乱码问题
       response.setCharacterEncoding("utf-8");
       String user = request.getParameter("username");
       //解决接收中文乱码问题
       user = new String(user.getBytes("iso-8859-1"),"gb2312");
       System.out.println(user);
       String msg = null;
       if("许老师".equals(user))
       {
           msg = "用户名已经被占用!";
       }else
       {
           msg = "用户名可以使用!";
       }
       response.getWriter().println(msg);

    } 

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       doGet(request,response);
    }
}
时间: 2024-12-06 12:47:05

在jsp中运用ajax实现同一界面不跳转处理事件的相关文章

在JSP中,当添加信息成功后跳转回主页面并弹出操作成功提示框

if(dg.addmes(title,forumname,pdate,cont)){//成功 此处向request中添加一个参数request.setAttribute("str", "true");request.getRequestDispatcher("suc.jsp").forward(request, response);}else{//失败 此处向request中添加一个参数request.setAttribute("str

Ajax调用后台action返回JSONArray(JSONObject)类型实现jsp中下拉列表的动态显示

一.描述 现在有个jsp页面上有一个所属学校和一个所属班级的下拉列表,只有在选择所属学校后才弹出所属班级列表,所以采用Ajax技术返回一个ArrayList类型的键值对显示在所属班级列表中,效果如图1所示: 二.源代码 1.main.jsp主要源代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@

用Servlet与JSP中实现分页查询

这个题目,总共分4个部分 1.查询总页数,把页码显示在页面上 2.把每页的内容显示在页面上 3.首页,尾页,上一页,下一页 4.下拉列表中的页数,(根据页数变动,选中第几页提交到第几页) 详解如下:(一部分代码在servlet中,一部分代码在JSP中) Servlet package com.lianxi; import java.io.IOException; import java.util.ArrayList; import javax.servlet.ServletException;

【Jsp】Jqueryajax技术在Jsp中的应用与javascript中的正则表达式

ajax不是一门新语言,只是一个很平常的即时响应技术,非常简单,一点都不玄虚,就像数据库技术一样能够运用至php,asp.net,asp与jsp等各大网页之中,与网页有着很好的融合性 ajax务必运行在服务器中,因为ajax是一项服务器技术,所以使用ajax在本地的两个未被挂载到服务器上的网页之间,传递数值是不可能的,尽管jquery是本身并不需要挂载到服务器上使用 那么ajax到底是什么呢? 传统的表单的提交有时会带给用户不良的体验, 比如以下的例子: 在jqueryajax.jsp下,有着如

JSP中如何利用JS实现登录页面的跳转(JSP中如何利用JS实现跳转页面)

JSP中如何利用JS实现登录页面的跳转(JSP中如何利用JS实现跳转页面) 注:只是用到js中的setTimeout();具体使用方法:  setTimeout(函数名, 时间(毫秒)); setTimeout( ) 是属于 window 的 method, 但我们都是略去 window 这顶层物件名称, 这是用来设定一个时间, 时间到了, 就会执行一个指定的 method.setTimeout( ) 通常是与 function一起用. 样例: 1 <%@ page language="j

jsp中的session

Jsp的session是使用bean的一个生存期限,一般为page,session意思是在这个用户没有离开网站之前一直有效,如果无法判断用户何时离开,一般依据系统设定,tomcat中设定为30分钟. 我们使用session功能,可以达到多个jsp程序从操作同一个java bean,那么这个java bean可以作为我们传统意义上的"全局变量池".(在java中我们可以使用static静态化一个变量和方法,使用singleton唯一化对象.) 在项目实践中,我们Jsp程序中很多参数需要从

jQuery框架+DWR框架实现的Java Web中的Ajax效果(异步请求,局部刷新)

一 简介和实现效果 这里用一个小例子来简单举例说明,做一个搜索引擎搜索提示效果,通过不断输入字符,然后在下方给出搜索提示.效果图如下: 通过上图可以看到,当输入一个"a"时,提示了很多内容,然后继续输入一个"e"后,提示的范围明显就变小了. 注:在文末我会给出完整源代码的下载链接,以供大家参考 二 具体实现 1 在eclipse for java ee中创建一个Java Web工程,然后导入相应的jar包,特别说明的是:这里要导入一个额外的dwr.jar.也就是说,

AJAX实现登录界面

使用php跳转界面和AJAX都可实现登录界面的跳转的登录失败对的提醒.但是,php跳转的方式 需要额外加载其他界面,用户体验差.AJAX可实现当前页面只刷新需要的数据,不对当前网页进行 重新加载或者是跳转. 做一个简单的登录界面: <div id=""> 用户名 : <input type="text" name="" id="uid" value="" /> </div>

PHP中使用Ajax

在PHP中使用Ajax来获取数据库中的数据,从而达到不刷新页面就可以获取. 首先在JS中定义变量如: var xmlHttp;function getXmlHttp(){ if(window.ActiveXObject){ xmlHttp = new ActiveXObject("MICROSOFT.XMLHTTP"); }else if(window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); }} 以上代码是判断浏览器是否获取到