-
struts的action中如何才能不立即返回,而是等收到异步调用响应后,再返回给客户端?5
在struts的action中,通过ActiveMQ异步调用了后端的相关服务。
因为是异步调用,需要等后端返回响应后,再让action返回给客户端。
但一般的框架中,action的excute函数都是直接return,让struts返回结果给客户端的。
怎么样才能让action不立即返回?
谢谢2014年7月31日 11:54
8个答案 按时间排序 按投票排序
-
可以在execute里写个死循环,中间开一个线程,线程执行结束了,跳出循环,这样就可以了。
不过从你的描述里分析出,你的要求也不是异步的,因为你的action返回,是要拿到结果才return,所以肯定会出页面无响应的结果,对用户来说,还是阻塞的。
如果是要对用户来说不阻塞,那只能客户端先发一个请求,服务接收并响应任务已接受,
客户端然后周期查询处理结果,
不过这样就会造成原来一阻塞的处理请求,变成周期性的多个查询结果请求
不知道有没有回答你的提问,欢迎追问。2014年8月13日 08:22
-
把返回客户端的结果做成一个线程 让他处于线程等待阶段(wait阶段)
只有当AvativeMQ中的异步返回有结果了在通知(notify)这个返回客户端的结果 返回给客户端
可以用内部类的方法实现2014年8月03日 13:50
-
struts可以先完成,
但是客户端不要做具体的相应,处于等待状态,
然后客户端ajax轮询任务完成状态,一直到操作完成了,
客户端再通过界面变化和用户响应2014年8月01日 15:48
-
ActiveMQ 在他的返回中 加一个状态值 然后再你的action中excute 加上一个线程 然后让其同步 根据他返回的状态 让excute 方法继续往下执行
2014年7月31日 18:40
-
这样你用异步的意义不大吧
看场景 你们用异步本来就是想让你的Struts这里尽快的释放资源(线程) 然后去做其他东西
你这样占用线程貌似完全可以去使用同步嘛
可以在发送jms消息后wait然后等待响应, 响应拿到后再往下执行return。2014年7月31日 15:49
-
不是特别明白你的需求
后端会返回一个结果是把,那就判断如果后端返回结果为空,
Thread.sleep(5000);
用while判断,不知道能解决问题不2014年7月31日 13:26
相关推荐
异步调用的基本概念是,客户端(通常是Web浏览器)发起一个请求,服务器不立即返回结果,而是启动一个后台线程来处理请求,然后立即响应客户端,告知其请求已被接收并正在处理。之后,客户端可以通过Ajax...
Struts2是一个强大的Java web应用程序框架,它提供了一种组织应用结构和控制流程的方式,而Struts2的异步调用功能则是为了提高用户体验,通过AJAX技术实现在不刷新整个页面的情况下更新部分视图。在本案例"Struts2之...
### JS调用Struts中的Action #### 背景与概念 在Web开发中,JavaScript(简称JS)作为客户端脚本语言,常被用来增强用户体验、处理表单验证等前端任务。而Struts框架则是Java Web开发中常用的一个MVC(Model-View-...
3. **Struts2 jQuery插件**:这是一个可选但非常有用的扩展,它提供了与jQuery兼容的Struts2动作结果类型,简化了Ajax调用和响应处理。例如,`struts2-jquery-plugin`包含了一些预定义的JSP标签,如`sj:a`(Ajax链接...
在这个例子中,Struts2控制器会将处理后的数据转换成JSON对象,然后通过Ajax响应返回给客户端。 现在,让我们深入了解一下实现这个功能的具体步骤: 1. **创建Struts2 Action**:在Struts2中,你需要定义一个...
在Struts2框架中,实现弹出Action返回的错误信息是一项常见的需求,特别是在表单验证、数据处理或业务逻辑执行失败时,向用户反馈错误信息至关重要。本文将深入探讨三种在Struts2中实现这一功能的方法,并对每种方法...
6. **响应处理**:当服务器端处理完请求后,会返回一个JSON对象,客户端JavaScript代码接收到这个响应后,根据需要更新DOM(文档对象模型),实现局部刷新的效果。 7. **示例代码**:在提供的压缩包文件“struts2中...
这样,当Action执行并返回`SUCCESS`时,Struts2的JSON插件会自动将`users`对象序列化为JSON格式,并将其作为响应发送给客户端。 以下是`UserAction`的简要代码: ```java public class UserAction extends ...
- **Interceptor**(拦截器):拦截器是Struts2的核心组件,它们按照预定义的顺序对Action的调用进行拦截,实现如日志记录、权限验证、事务管理等功能。 2. **配置方式**: - **XML配置**:传统的Struts2配置通常...
Struts2、jQuery和Ajax是Web开发中的三个关键组件,它们共同构成了文件异步上传的基础框架。这个项目是在MyEclipse环境下实现的一个简单的文件上传功能,让我们深入了解一下这些技术及其在文件上传中的应用。 首先...
1. **构建请求参数**:根据Struts2 Action中期望的参数,Android客户端需要构造相应的JSON对象或键值对。 2. **发起HTTP请求**:使用选择的网络请求库,设置请求方法(GET或POST),URL(指向Struts2 Action的URL)...
在Struts2中实现多文件异步上传是一个常见的需求,它能够提高用户体验,因为用户可以在不等待所有文件上传完成的情况下继续浏览其他页面。下面将详细解释如何在Struts2中实现这一功能。 首先,我们需要理解异步上传...
5. AJAX响应:AJAX接收到服务器返回的JSON数据后,在客户端解析并更新第二个下拉列表的选项。这可以通过修改DOM元素实现。 6. 用户界面更新:用户看到第二个下拉列表根据第一个的选择自动填充了新的选项。 在"Ajax...
在Web开发中,异步请求是一种提升用户体验的重要技术,它允许页面在不刷新整个页面的情况下与服务器进行数据交互。本文将详细讲解如何使用JQuery、JSON和Struts2框架来实现Ajax异步请求。 首先,JQuery是一个轻量级...
这样,当你调用对应的URL时,Struts2会自动将Action中的Java对象转换为JSON格式并返回给客户端。例如,`/json/returnMsg.action`会返回`message`属性的值,而`/json/returnUser.action`则会返回`userInfo`对象的JSON...
在Struts框架中,我们可以通过创建一个支持AJAX的Action,然后使用jQuery或其他JavaScript库发送异步请求,获取JSON格式的数据。 在实际应用中,Struts2的JSON插件使得AJAX请求处理变得更加简单。首先,我们需要在...
2. **JSON结果类型**:通过配置Action的结果为"json"类型,可以轻松地将Action的结果以JSON格式返回给客户端。 3. **配置支持**:可以通过配置文件控制哪些Action支持JSON输出,以及JSON数据的格式化选项。 4. **...
确保这个插件已添加到项目的类路径中,它能帮助Struts2更方便地处理JSON数据,并将其作为Action结果返回。 7. **安全考虑**:在实际应用中,需要考虑防止SQL注入、跨站脚本攻击等安全问题。对输入进行适当的验证和...
这个回调对象用于在异步调用完成后通知调用者。异步方法不能有返回类型,因此它们总是返回void。所有与调用者的通信都通过传递的回调对象进行。异步接口的命名规则是与服务接口同包且名字相同,但末尾加上"Async"。 ...
在Web开发中,jQuery、Struts2、Ajax和JSON是常见的技术组合,它们协同工作以实现动态、异步的数据交互。本示例将探讨如何利用jQuery的Ajax功能向Struts2框架发送请求,并以JSON格式接收响应数据。下面我们将详细...