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

    xiaoxiao2025-01-18  10

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

    转载请注明原文地址: https://ju.6miu.com/read-1295593.html
    最新回复(0)