AJAX Servlet实现数据异步交互的方法

发布时间 - 2026-01-11 02:13:04    点击率:

在慕课网上看了AJAX的一些教程,自己参考着实现一下!

首先,导入json所需要的6个包

下载链接:JSONObjectjar_jb51.rar

总的目录:

前端页面:

首先是一个输入框:

<input type="text" id="keyword" name="keyword" onkeyup="getContents()">

onkeyup表示按下键盘时的操作

javascript:

<script type="text/javascript">
  
  //全局xmlHttp对象
  var xmlHttp;

  //获得xmlHttp对象
  function createXMLHttp() {
    //对于大多数浏览器适用
    var xmlHttp;
    if (window.XMLHttpRequest) {
      xmlHttp = new XMLHttpRequest();
    }
    //考虑浏览器的兼容性
    if (window.ActiveXObject) {
      xmlHttp = new ActiveXOject("Microsoft.XMLHTTP");
      if (!xmlHttp) {
        xmlHttp = new ActiveXOject("Msxml2.XMLHTTP");
      }
    }
    return xmlHttp;
  }
  
  //回调函数
  function callback() {
    //4代表完成
    if(xmlHttp.readyState == 4){
      //200代表服务器响应成功,404代表资源未找到,500服务器内部错误
      if(xmlHttp.status == 200){
        //交互成功获得响应的数据,是文本格式
        var result = xmlHttp.responseText;
        //解析获得的数据
        var json = eval("("+ result +")");
        //获得数据之后,就可以动态的显示数据了,把数据显示到输入框下面
        alert(json);
      }
    }
  }
  
  //获得输入框的内容
  function getContents(){
    //首先获得用户的输入内容,这里获得的是一个结点
    var content = document.getElementById("keyword");
    if(content.value ==""){
      return;
    }
    
    //向服务器发送内容,用到XmlHttp对象
    xmlHttp = createXMLHttp();
    //给服务器发送数据,escape()不加中文会有问题
    var url = "search?keyword=" + escape(content.value);
    //true表示js的脚本会在send()方法之后继续执行而不会等待来自服务器的响应
    xmlHttp.open("GET",url,true);
    //xmlHttp绑定回调方法,这个方法会在xmlHttp状态改变的时候调用,xmlHttp状态有0-4,
    //我们只关心4,4表示完成
    xmlHttp.onreadystatechange=callback;
    xmlHttp.send(null);
  }
</script>

总的index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
  
  //全局xmlHttp对象
  var xmlHttp;

  //获得xmlHttp对象
  function createXMLHttp() {
    //对于大多数浏览器适用
    var xmlHttp;
    if (window.XMLHttpRequest) {
      xmlHttp = new XMLHttpRequest();
    }
    //考虑浏览器的兼容性
    if (window.ActiveXObject) {
      xmlHttp = new ActiveXOject("Microsoft.XMLHTTP");
      if (!xmlHttp) {
        xmlHttp = new ActiveXOject("Msxml2.XMLHTTP");
      }
    }
    return xmlHttp;
  }
  
  //回调函数
  function callback() {
    //4代表完成
    if(xmlHttp.readyState == 4){
      //200代表服务器响应成功,404代表资源未找到,500服务器内部错误
      if(xmlHttp.status == 200){
        //交互成功获得响应的数据,是文本格式
        var result = xmlHttp.responseText;
        //解析获得的数据
        var json = eval("("+ result +")");
        //获得数据之后,就可以动态的显示数据了,把数据显示到输入框下面
        alert(json);
      }
    }
  }
  
  //获得输入框的内容
  function getContents(){
    //首先获得用户的输入内容,这里获得的是一个结点
    var content = document.getElementById("keyword");
    if(content.value ==""){
      return;
    }
    
    //向服务器发送内容,用到XmlHttp对象
    xmlHttp = createXMLHttp();
    //给服务器发送数据,escape()不加中文会有问题
    var url = "search?keyword=" + escape(content.value);
    //true表示js的脚本会在send()方法之后继续执行而不会等待来自服务器的响应
    xmlHttp.open("GET",url,true);
    //xmlHttp绑定回调方法,这个方法会在xmlHttp状态改变的时候调用,xmlHttp状态有0-4,
    //我们只关心4,4表示完成
    xmlHttp.onreadystatechange=callback;
    xmlHttp.send(null);
  }
</script>
</head>
<body>
  <input type="text" id="keyword" name="keyword" onkeyup="getContents()">
</body>
</html>

后端:

AjaxServlet.java

package com.loger.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;

/**
 * Servlet implementation class AjaxServlet
 */
@WebServlet("/search")
public class AjaxServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;
  
  static List<String> list = new ArrayList<>();
  static{
    list.add("chenle");
    list.add("陈乐");
  }
    
  /**
   * @see HttpServlet#HttpServlet()
   */
  public AjaxServlet() {
    super();
    // TODO Auto-generated constructor stub
  }

  /**
   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //设置编码
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    
    //首先获得客户端发送来的数据
    String keyword = request.getParameter("keyword");
    System.out.println(keyword);
    
    
    
    //返回json数据
    response.getWriter().write(JSONArray.fromObject(list).toString());
  }

  /**
   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
   */
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
  }

}

运行结果:

这就是AJAX的实现步骤,其他在页面上把内容显示出来,如输入验证码时在旁边实时提示是否正确等操作,通过JS实现即可,由于本人没怎么学过js,就这样子吧!!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# AJAX  # Servlet异步交互  # 数据异步交互  # layui实现数据分页功能(ajax异步)  # layui实现数据表格table分页功能(ajax异步)  # 关于Ajax异步请求后台数据进行动态分页功能  # jquery ajax异步提交表单数据的方法  # vue.js 表格分页ajax 异步加载数据  # 关于ajax异步访问数据的问题  # 会在  # 输入框  # 回调  # 的是  # 会有  # 不加  # 绑定  # 就可以  # 未找到  # 是一个  # 看了  # 他在  # 这就是  # 按下  # 在旁边  # 这样子  # 验证码  # 所需要  # 下载链接  # 学过 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  Laravel如何使用Service Container和依赖注入?(代码示例)  香港服务器建站指南:免备案优势与SEO优化技巧全解析  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  Laravel如何使用Collections进行数据处理?(实用方法示例)  如何在 React 中条件性地遍历数组并渲染元素  java中使用zxing批量生成二维码立牌  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  如何用西部建站助手快速创建专业网站?  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  如何在景安服务器上快速搭建个人网站?  Laravel如何生成API文档?(Swagger/OpenAPI教程)  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  如何在宝塔面板中创建新站点?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  利用python获取某年中每个月的第一天和最后一天  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  Laravel如何使用Blade模板引擎?(完整语法和示例)  如何在宝塔面板中修改默认建站目录?  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  进行网站优化必须要坚持的四大原则  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  php打包exe后无法访问网络共享_共享权限设置方法【教程】  海南网站制作公司有哪些,海口网是哪家的?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  教学论文网站制作软件有哪些,写论文用什么软件 ?  EditPlus中的正则表达式 实战(4)  如何自定义建站之星网站的导航菜单样式?  iOS中将个别页面强制横屏其他页面竖屏  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  如何在服务器上配置二级域名建站?  Android滚轮选择时间控件使用详解  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  详解Android中Activity的四大启动模式实验简述  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】