从 AJAX 调用异步 Servlet

2024-03-05

我想要完成的事情并不太复杂,但由于我不太熟悉 AJAX,所以遇到了一些麻烦。

实现后,我将拥有一个 JSP,其中有一个调用异步 Servlet 的按钮。 servlet 将运行一个长时间运行的任务,并在部分任务完成时通过向表中添加行来向用户提供动态反馈。

在尝试编写最终版本之前,我正在进行概念验证,以了解其工作原理。然而,我遇到了障碍。当我在单击按钮时使用 AJAX 调用时,当调用的是常规同步 servlet 时,该函数将按预期工作。但是,一旦我使 servlet 异步,更新就不会显示。

有人能够提供一些关于出了什么问题的见解吗?

我的 JSP 看起来像这样:

<html>
    <body>
        <script type="text/javascript" charset="utf-8">
            $(document).ready(function() {
                $('#mybutton').click(function() {
                    $.get('someservlet', function(responseJson) {
                        $.each(responseJson, function(index, item) {
                            $('<ul>').appendTo('#somediv');
                            $('<li>').text(item.row1).appendTo('#somediv');
                            $('<li>').text(item.row2).appendTo('#somediv');
                            $('<li>').text(item.row3).appendTo('#somediv');
                            $('<li>').text(item.row4).appendTo('#somediv');
                        });
                    });
                });
            });
        </script>
        <p><button id="mybutton">Click to add things</button></p>
        <div id="somediv"></div>
    </body>
</html>

我的异步 ServletdoGet()方法如下所示:

response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
final AsyncContext asyncContext = request.startAsync();
final PrintWriter writer = response.getWriter();
asyncContext.setTimeout(10000);
asyncContext.start(new Runnable() {

@Override
public void run() {
    for (int i = 0; i < 10; i++) {
        List<Row> rows = new ArrayList<Row>();
        rows.add(new Row(i, i + 1, i + 2, i + 3));
        String json = new Gson().toJson(rows);
        writer.write(json);
        writer.flush();
        log.info("Wrote to JSON: " + i);
        try {
            Thread.sleep(1000);
        } catch (InterruptedException ex) {
        }
    }
    asyncContext.complete();
    }
});

有什么想法吗?当我单击按钮时发生的 AJAX 调用似乎只接受来自主 servlet 线程的响应。也许我需要从异步调用 JavaScript 函数write()打电话?我只是不确定如何执行此操作,或者这是否是正确的执行方法。


看一下

http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/async-servlet/async-servlets.html http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/async-servlet/async-servlets.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 AJAX 调用异步 Servlet 的相关文章

  • V8 如何管理它的堆?

    我知道V8的垃圾收集在工作时 会从GC的root开始追踪 这样无法到达的对象就会被标记然后被清除 我的问题是GC是如何遍历那些对象的 必须有一个数据结构来存储所有可达或不可达的对象 位图 链接表 顺便说一句 JVM 也做同样的事情吗 艾伦秀
  • 有效地查找正则表达式的所有重叠匹配项

    这是后续与 java 正则表达式匹配的所有重叠子字符串 https stackoverflow com q 11303309 244526 有没有办法让这段代码更快 public static void allMatches String
  • 从 eclipse 运行时 java.io.FileNotFoundException: (没有这样的文件或目录)

    我正在写入文件并想要控制台输出 TODO Create a game engine and call the runGame method public static void main String args throws Excepti
  • Maven 多模块项目结构问题

    自从过去几周构建我的 Maven 多模块项目以来 这是我的一次有趣的经历 当我决定使用 Maven 进行构建生命周期管理时 我有几个原因希望选择 Maven A 大多数开发团队都是分开的 这样每个团队都可以在项目中的单独模块上工作 例如团队
  • 如何消除警告:使用“$”而不是“.”对于 Eclipse 中的内部类

    我是 Android 开发新手 当我将 eclipse 和 Android SDK 更新到最新版本后 我收到警告 Use instead of for inner classes or use only lowercase letters
  • Java 的 QP 求解器 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 会话 bean 中的 EntityManager 异常处理

    我有一个托管无状态会话 bean 其中注入了 EntityManager em 我想做的是拥有一个具有唯一列的数据库表 然后我运行一些尝试插入实体的算法 但是 如果实体存在 它将更新它或跳过它 我想要这样的东西 try em persist
  • Vertx HttpClient getNow 不工作

    我的 vertx HttpClient 有问题 下面的代码显示使用 vertx 和纯 java 测试 GET Vertx vertx Vertx vertx HttpClientOptions options new HttpClientO
  • 您能让 Tomcat 6 stdout.log 文件表现得像 log4j DailyRollingFileAppender 吗?

    我们使用的是 Tomcat 6 的 Windows 安装 默认情况下 我们应用程序的 log4j 输出将转到 catalina base logs stdout log 文件 该日志文件仅在我们重新启动 Tomcat 时滚动 并且文件名始终
  • Java G1 GC 处理引用对象运行缓慢

    我已经在 J ava 上运行了计数器 它24小时工作 每秒点击通过100次左右 白天 GC 处理时间从 20 60 毫秒缓慢上升到 10000 60000 毫秒 然后下降到 20 60 毫秒 这种模式不时地重复 从 GC 日志中我发现 GC
  • 字节码和位码有什么区别[重复]

    这个问题在这里已经有答案了 可能的重复 LLVM 和 java 字节码有什么区别 https stackoverflow com questions 454720 what are the differences between llvm
  • 哪种 Java DOM 包装器是最好或最受欢迎的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • @TestPropertySource 不适用于 Spring 1.2.6 中使用 AnnotationConfigContextLoader 的 JUnit 测试

    似乎我在 Spring 4 1 17 中使用 Spring Boot 1 2 6 RELEASE 所做的任何事情都不起作用 我只想访问应用程序属性并在必要时通过测试覆盖它们 无需使用 hack 手动注入 PropertySource 这不行
  • 您可以使用 JSONP 检索您的 Skype 状态吗?

    有谁知道使用 JSONP 获取 Skype 状态的 URL 到目前为止我只找到了一个 XML 状态 URL http mystatus skype com username xml 我正在尝试使用 AJAX 查询 Skype 是的 我可以使
  • 如何计算文件中单词的长度?爪哇

    我正在尝试编写一个代码来计算文件中特定长度的单词数 例如 How are you 会打印 Proportion of 3 letter words 100 3 words 我想计算长度为 1 2 3 4 5 6 7 8 9 10 11 12
  • RMI 服务器:rmiregistry 或 LocateRegistry.createRegistry

    对于服务器端的RMI 我们需要启动吗rmiregistry程序 或者只是调用LocateRegistry createRegistry 如果两者都可以的话 各有什么优点和缺点 他们是同一件事 rmiregistry是一个单独的程序 您可以从
  • 使用 Maven 3 时 Cobertura 代码覆盖率为 0%

    读完这篇文章后 将 Cobertura 与 Maven 3 0 2 一起使用的正确方法是什么 https stackoverflow com questions 6931360 what is the proper way to use c
  • Android 中的字符串加密

    我正在使用代码进行加密和加密 它没有给出字符串结果 字节数组未转换为字符串 我几乎尝试了所有方法将字节数组转换为字符 但没有给出结果 public class EncryptionTest extends Activity EditText
  • 会话过期后如何重定向到登录页面?

    我有三个 JSF 2 0 Web 模块 当会话过期时我需要重定向到登录页面 我已经尝试过使用HttpSessionListener 它正在调用sessionDestroyed 事件方法 但我无法在那里转发 重定向请求 我认为这是因为没有Ht
  • 日期时间解析异常

    解析日期时 我的代码中不断出现异常错误 日期看起来像这样 Wed May 21 00 00 00 EDT 2008 这是尝试读取它的代码 DateTimeFormatter formatter DateTimeFormatter ofPat

随机推荐

  • Python、Numpy、OpenCV——创建修改后的(同样快的)“addWeighted”函数

    我正在用 python 编写一个程序 该程序使用的函数与addWeightedopenCV 中的函数 不同之处在于 它实际上并不添加表示图像的 numpy 数组 而是采用在任何特定坐标处更亮的像素并使用该值 然而 我发现 尽管这些函数做的事
  • 有没有办法在 Azure Static Web App 中查看文件?

    有没有办法使用Azure Portal查看上传到Azure Static Web App的文件 我需要检查一些项目 我可以在 DevOps Repo 中看到该文件 但想确认它位于 Azure Static Web App 中的正确文件夹结构
  • 如何将参数发送到前置过滤器?

    我想在我的应用程序控制器中创建一个 before filter 方法 如下所示 def check role role name unless logged in user has role role name flash notice A
  • 伪造 HTTP 请求响应以在 Android 中进行测试

    我正在编写一个 Android 应用程序 有时需要通过 HTTP 从 REST API 请求数据 我正在使用 Apache DefaultHttpClient 来执行请求 有没有办法为此应用程序编写测试并在运行测试时 替换 DefaultH
  • 迭代前默认选择 Angular 设置下拉选择选项

    我有一个选择下拉菜单 并从列表中迭代选项 我试图设置为选定的单独选项 作为默认值 以防用户未选择值 以下是我尝试实现的方法
  • 在 XCode 中找不到应用程序证明功能

    根据 App Check Firebase 文档 据说可以将 App Attest 功能添加到您的应用程序中 但是 我在 XCode 中找不到任何此类功能 对此有什么见解吗 注意 我们已在配置文件中启用功能 文档链接 https fireb
  • 当通过开发工具查看时,Selenium WebDriver 无法找到页面源中不存在但 HTML 中存在的元素

    我正在使用 Selenium Web Driver HtmlUnitDriver 来搜索网页上的元素 我只能搜索页面源中可见的那些元素 不过 我可以使用 Internet Explorer 开发人员工具 F12 查看这些元素的详细信息 当我
  • 无法为字符串生成正则表达式

    我有一根绳子abc 123 243 xyz 432 567 我想生成一个与特定字符串匹配的正则表达式 应根据以下示例和具体结果来测试正则表达式 Exp 1 abc 123 234 xyz 432 567 123存在于 123 243 结果
  • 使用 jQuery 隐藏本机工具提示

    当用户将鼠标悬停在具有标题属性的锚标记上时 是否有办法隐藏本机工具提示操作 我不想删除它 只是不显示默认工具提示操作的令人讨厌的黄色框 UPDATE 在阅读了其他几篇文章后 我认为我无法隐藏本机工具提示操作的标题属性 但我试图跳出框框思考
  • UITextField 不会成为FirstResponder

    我在让文本字段接受成为FirstResponder 指令时遇到问题 我提供了一种自定义机制来在导航栏中创建标题 我有另一个视图控制器成功地使用了相同的技术 在 viewDidAppear 上我触发 void addTitleTextFiel
  • 如何使用 Python Popen 执行多个参数?

    我正在尝试制作一个带有按钮的 PyGtk Gui 当用户按下这个按钮时 gnome terminal提示用户写入密码 然后它会克隆这个Git 存储库 https github com pererinha gedit snippet jque
  • 从 pandas 数据框中提取字典值

    我需要从 json 文件导入的数据集中添加额外的功能 它看起来是这样的 f1 pd read json https raw githubusercontent com ansymo msr2013 bug dataset master da
  • 在 Material Angular 中显示一个简单的警报对话框

    我正在使用材质角度 来自角材料 https material angular io 该网站中的示例似乎有点过于复杂 互联网上的所有其他教程似乎要么已经过时 要么正在使用 AngularJS 如何显示一个带有标题 消息和确认 取消按钮的简单警
  • 如何使webpack 5.x src路径是项目真正的src路径而不是webpack配置文件根路径

    我在配置中配置 webpack src 路径 如下所示 path resolve dirname src 看来webpack没有找到真正的项目src路径 源路径是 web pack 配置路径 现在我得到这样的路径 Users xiaoqia
  • Go代码可以在windows中生成dll或者C++/C#可以调用golang代码吗?

    Go函数可以被调用吗C or C windows 上的代码 Go支持在Windows中生成dll吗 不 Go 代码是静态链接的 其原因在于 Go 的运行时 它嵌入在每个可执行文件中 Edit 显然 通过大量间接的方式是可能的 但在实践中远未
  • 在 Python 中,如何在列表中包含单个反斜杠元素?

    首先 我在 Windows 10 上运行 Python 3 6 python 中的反斜杠字符是一个特殊字符 充当字符串的 转义符 因此 无法直接打印 如果我想打印一个反斜杠 这样做是行不通的 print error message 解决这个
  • 电报机器人 - 保留问题和答案

    我的电报机器人是一个对话框 它需要保留问题和答案 如 TriviaBot 执行此操作的最佳 最有效 方法是什么 以用户 ID 作为键的数据库 有很多电报机器人 但是哪里有带有源代码的示例来获取想法 您的问题与 telegram bot AP
  • 将 vim 的强大功能融入 WM:模态窗口管理? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我是 Vim 的忠实粉丝 并且在很大程度上坚持极其高效的模式编辑风格 在使用 Vim 一些经验之后 我决定使用其他分享其高效 快速键盘使用理念的软件
  • Chartjs 气泡图中的各个气泡可以有标签吗?

    我正在使用 Chartjs 创建气泡图 我能够创建描述每个气泡的工具提示 但我的图表的用户可能无法将鼠标悬停在其上以查看工具提示 BubbleData 对象格式不包含标签元素 无论如何我都放了一个 不走运 我尝试过图表数据对象的 标签 元素
  • 从 AJAX 调用异步 Servlet

    我想要完成的事情并不太复杂 但由于我不太熟悉 AJAX 所以遇到了一些麻烦 实现后 我将拥有一个 JSP 其中有一个调用异步 Servlet 的按钮 servlet 将运行一个长时间运行的任务 并在部分任务完成时通过向表中添加行来向用户提供