struts2 ajax请求方法

struts2 ajax请求方法

struts2作为一个mvc框架,请求一个方法,返回一个页面,当post请求成功之后,跳转到success页面,大多数情况下能够满足我们的要求,但是web开发中ajax技术的使用是不可避免的,我们知道ajax请求大多数情况下需要的数据是json格式。我们如何让struts这个mvc框架作为一个restful服务器,提供rest api,显得尤为重要,虽然这时候不能完全体现mvc框架的职能。

struts2实现json请求,可以有两种方式:

第一种

通过struts2-json-plugin插件,这种方式需要在struts.xml中配置action,而且package需要继承json-struts,另外还需要配置结果资源。

<package name="cymooc" extends="project-base,json-default" namespace="/">
<action name="activity_list" class="com.great.cymooc.module.m.web.MobelAction"
			method="activity_list">
			<result name="success">/m/activity_list.jsp</result>
			<result name="suc" type="json">
				<param name="root">activity_list</param>
			</result>
		</action>

package需要继承json-default
result的type值是json
param名为root的参数就是我们在 action中定义的activity_list变量

第二种

传统的输出流,向ajax请求写结果

package com.xxx.struts.action;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import org.apache.struts2.ServletActionContext;
public class BaseAction {
	public String ajax(Object out){
		PrintWriter writer = null;
		try {
			HttpServletResponse response = ServletActionContext.getResponse();		
			response.setContentType("application/json;charset=utf-8");
			writer = response.getWriter();
			response.setDateHeader("Expires", 0);
			JSONObject object = JSONObject.fromObject(out);
			writer.write(object.toString());
			writer.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(writer!=null){
				writer.close();
			}
		}
		return null;
	}
}
package com.xxx.struts.action;
import java.util.HashMap;
import java.util.Map;
public class UserAction extends BaseAction{
	public String json(){
		Map<String, Object> result  = new HashMap<String, Object>();
		result.put("code", 200);
		result.put("msg", "success");
		result.put("error", "没有错误信息");
		return ajax(result);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值