问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

struts2怎么调用ajax

发布网友 发布时间:2022-04-23 00:25

我来回答

1个回答

热心网友 时间:2022-04-23 01:55

Struts2中有两种方式处理Ajax请求:
(注:我使用的是最新的Struts 2.3.20)

1. 使用Stream result的方式以流的形式写出到客户端。(这种方式我没有亲自做实验,下面的例子参考Struts2的官方文档)
这样书写我们的Action:
package actions; import java.io.InputStream;import java.io.StringBufferInputStream;import com.opensymphony.xwork2.ActionSupport; public class TextResult extends ActionSupport { private InputStream inputStream; public InputStream getInputStream() { return inputStream; } public String execute() throws Exception { inputStream = new ByteArrayInputStream("Hello World! This is a text string response from a Struts 2 Action.".getBytes("UTF-8")); return SUCCESS; }}

这样配置我们的struts.xml:<action name="text-result" class="actions.TextResult"> <result type="stream">

们可以这样书写我们的Action:
package actions; import java.io.InputStream;import java.io.StringBufferInputStream;import com.opensymphony.xwork2.ActionSupport; public class TextResult extends ActionSupport { private InputStream inputStream; public InputStream getInputStream() { return inputStream; } public String execute() throws Exception { inputStream = new ByteArrayInputStream("Hello World! This is a text string response from a Struts 2 Action.".getBytes("UTF-8")); return SUCCESS; }}

这样配置我们的struts.xml:<action name="text-result" class="actions.TextResult"> <result type="stream">

. 使用Struts2的插件机制:(下面我以返回JSON格式的数据为例进行说明,需要struts2-json-plugin-2.3.20包,这个包在Struts2的官方下载中已经包含,不需要额外下载)
首先是前台发送Ajax请求:(我这里使用JQuery)
$("#btnClick").click(function() { $.post("hello", {name: "tanzhenyu"}, function(data) { alert(data.greeting + ", " + data.name + "!"); }, "json"); });

我们的Action这样写:
public HelloAction extends ActionSupport { private String name;//这里的nam用来接收Ajax的请求数据 private Map<String, String> resultMap;//这里的Map用来返回结果JSON数据 public getName() { return name; } public setName(String name) { this.name = name; } public getResultMap() { return resultMap; } public setResultMap(Map<String, String> resultMap) { this.resultMap = resultMap; } public String execute() { resultMap = new Map<>(); resultMap.put("greeting", "Hello"); resultMap.put("name", name); return Action.SUCCESS; }}

这里注意的是:我们的Map对象不需要手动转成JSON对象,Struts2的JSON插件会帮我们转。

我们的配置文件可以这样写:
<package name="default" namespace="/" extends="json-default"> <action name="hello" class="cn.tzy..hello.action.HelloAction"> <result type="json"> <param name="root">resultMap</param> </result> </action></package>

这里注意的是:extends必须是“json-default”,name为root的param是说明返回时被序列化的对象,值为一个OGNL表达式。
OK,成功搞定,如果有疑问可以参考Struts2官
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何查被录取到的专业 怎样查被录取的专业 录取后怎样查询录取的专业 录取专业怎么查 已被录取怎么查专业 ghs网络语什么意思_ghs网络语意思出处含义介绍 纸箱企业管理软件 ghs什么意思网络(ghs什么意思网络用语) 《喜羊羊与灰太狼》大结局 0与任何数相加都得原数吗? 我和先生是两部手机一个怎么能够分开 如何做到工作和生活的分开? 两个和在一起了,怎么分开啊 怎样消除搜狗浏览器消息盒子 2010年广东高考成绩查询时间 请问广东高职3+证书录取怎样查询 广东高考录取查询时是不是每天要等系统更新了才能查得到?还是随时能查? 2011广东高职高考分数怎样查询 2009年广东省高职高考分数的查询在什么时间?怎样查? 广东高考高职类(3+证书)什么时候可以查看成绩?还有忘了密码怎么办? 09广东省高职高考成绩几时出?怎么可以查到? 宽带突然上不了网,是怎么回事? 为什么OPPOa37会自己乱点? 我买了一份人寿保险,这个保险可以报销修车费吗? 《苍空邪月》最新txt全集下载 《魔刀斩苍穹》txt下载在线阅读全文,求百度网盘云资源 qq幻想世界在那里可以刷到邪月妖玉 不是邪月魔石 纵横中文网的最高订阅是多少 越界小说txt全集免费下载 请问谁知道萧鼎写的诛仙2还在更新吗?还是又太监了?唉!萧大大太让人失望了,继诛仙之后就在没有一部不 商务英语专业的女生适合哪些工作 按键精灵 游戏窗口区域鼠标坐标偏移 游戏鼠标点击人物就过去,绕开障碍物是怎么实现的 按键精灵怎么得到窗口坐标 按键精灵后台 按键精灵 后台脚本 按键精灵后台窗口坐标获取方法和后台鼠标命令求高手解答。 关于 按键精灵8 后台鼠标移动点击 QQ自由幻想按键精灵后台控制鼠标点击不准问题 window图片查看器窗口尺寸调整? win7 窗口的问题, 打开图片查看器,由于窗口太下了,那个放大的都被横的边栏给挡住了看不到. 可以同时打开两个Windows图片查看器的预览窗口吗?? 怎么实现鼠标移动到listview的某行时,有一个浮动窗体显示详细信息 按键精灵怎么获取窗口坐标啊 按键到点变成可用状态后台逻辑怎么判断 建筑会计与工业会计有什么区别 中国人寿鑫福赢家年金险怎么买划算?好吗? 建筑会计与工业会计的区别(写论文用的) 大都会人寿宝贝A款年金险怎么买划算?每年花多少钱? 工业会计、商业会计、服务业会计、建筑业会计有何不同?