Ajax与Struts2的action之间的数据交互

本文将主要说明Ajax与Action数据交互的实现过程,前端使用JQuery中Ajax的相关方法,get或者post,将数据以Json格式传回到业务调度Action中,Action中处理后,再讲数据以Json格式返回给前端。

前端Ajax请求

可以使用get或者post两种方式向服务器发送请求,首先先熟悉get的打开方式。
整体方法结构:$.get(url [, data] [, callback] [, type])

  • url:请求的HTML页的URL地址
    data(可选):发送至服务器的key/value数据会做为QueryString附加到请求URL中
    callback(可选):载入成功时回调函数(即当Response的返回状态为success才调用)自动将请求结果和状态传递给该方法
    type(可选):服务器端返回内容的格式,包括xml,html,script,json,text和_default.

例子,使用get向后台请求数据

    $.get(
            "getSafeEvent.action",//请求的action相对路径
            function (jsonStr) {
              var StrArray = eval(jsonStr);  //解析json数据
              var event_type = StrArray[0].type;
            },
            "json"
    );  //从后台获取所有数据

同样也可以使用post向后台请求,使用方法和get基本相同。例子,使用post发送数据

            var eventJson = {
              "lng": e.point.lng,
              "lat": e.point.lat,
              "time": timeValue,
              "address": addressValue,
              "type": typeValue,
              "content": contentValue
            }

            $.post(
                    "addNewEvent.action",
                     eventJson, //需要发送的Json数据
                     function (data) {
                          marker.setTitle(data);
                    },
                    "text"
              );

后台服务Action

以上文中的get请求为例,给出相应的action处理代码

public class GetSafeEventAction {

    public void execute() throws Exception {
        ActionContext ac = ActionContext.getContext();
        List<WeiBoContent> contents = ContentWithGeoFinder.getContentWithGeo();
        HttpServletResponse response = (HttpServletResponse) ac.get(ServletActionContext.HTTP_RESPONSE);
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().write(JSONArray.fromObject(contents).toString());
        }
}

注意到Action的返回方法被省略了,因为处理结果直接通过response输出到前端,这里使用到了JSON库的JSONArray方法来将一个Java Object转化为Json数组。实际运行action返回的值如下所示:

{//Json数组开始
//Json格式的对象
{"addr":"虞城","content":"#商丘微求助# 在虞城新建路月轩网吧丢失一个钱包,钱包里有两千多现金,身份证,银行卡等证件;钱不重要,主要是证件之类的。有小偷照片,听说叫吴振宇,大概15,6岁…希望有认识的朋友帮下忙,找到重谢 |秒拍视频 .","fatherId":8942,"id":8942,"isShow":"yes","lat":"34.369072","lng":"115.91422","time":"2015-012-01:2015-012-30","type":"安全","username":"商丘那点事"}
{"addr":"瓮安","content":"#黔南身边事#【神秘小偷猖狂搜遍瓮安中学校园,数名学生被盗】网友爆料:6月27号凌晨3点左右,瓮安中学被一头戴鸭舌帽,面戴口罩,手拿电筒的男子潜入教学楼,挨个教室搜了个遍,高一、高二数名学生被盗。沒有了生活费的学生很无奈,试问校园警务你的安保工作是怎么开展的,还能不能保证让学生安心的读...展开全文c","fatherId":8911,"id":8911,"isShow":"yes","lat":"27.17234","lng":"107.42141","time":"2015-012-01:2015-012-30","type":"安全","username":"黔南头条"}
}//Json数组结束

其中WeiBoContent对象的结构如下:

public class WeiBoContent {

    private String username;
    private String content;
    private String time;
    private String lng;
    private String lat;
    private Integer id;
    private String type;
    private String addr;
    private Integer fatherId = 0;
    private String isShow = "yes";
}

Struts配置

<struts>
    <package name="com.eventMap.struts2" extends="struts-default" >
        <action name="getSafeEvent" class="actions.GetSafeEventAction"> </action>
    </package>
</struts>

配置只需要将逻辑action与实际action链接即可,因为没有action中没有return方法,所以这里也就不需要为其配置result。


参考

使用Jquery的Ajax方法与后台Action交互
使用Struts2的Json插件来与前端Ajax交互

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值