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

来源:互联网 发布:mybatis拼接sql 编辑:程序博客网 时间:2024/05/16 18:00

本文将主要说明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交互

0 0
原创粉丝点击