Struts2 返回JSON 数据到浏览器端

在B/S结构中,json数据的交互也是十分常用的,尤其是在Ajax的某些异步交互时。

现在来记录一下服务器端返回Json数据的大概:

正如标题所说,这是Struts2框架,所以先配置网站的web.xml:

...<!--关于struts2部分-->
<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
	
	<filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
...

然后是配置struts.xml:

...
<package name="upload" namespace="/" extends="struts-default">
        <action name="getJson" class="com.utils.Contrlor"><!--Contrlor就是负责响应action的类-->
        </action>
    </package>
...
然后就是
public class Contrlor extends ActionSupport{
	
	/**
	 * gopain
	 */
	private static final long serialVersionUID = 6015784889350333698L;

        public void execute() {
	
		//....
		HttpServletResponse response = ServletActionContext.getResponse();
		response.setContentType("text/html");
		PrintWriter out = null;
		try {
			out = response.getWriter();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			out.close();
		}
		out.println(new JSONObject().accumulate("code", "OK").accumulate("pic", name).toString());
		out.close();
		//....
		//return SUCCESS;
	}
}
out.println(new JSONObject().accumulate("code", "OK").accumulate("pic", name).toString());
这是返回Json数据的关键语句,其实都是关键语句啦,如果有多个键-值只需要在.toString()前多几个.accumulate(key, value)就可以了。value也可以是对象,这个很好理解吧。

然后就是浏览器端访问。

jquery:

jQuery.get("getJson",null,function(data){
    var json = eval('('+data+')');
    alert(data);
    alert(json.code);
});
这样就可以啦!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Struts2 中响应 JSON 数据并设置响应头可以通过以下步骤完成: 1. 创建一个 Java 类作为 Action,该类用于处理请求并返回 JSON 数据。 ```java public class MyAction extends ActionSupport { private String jsonData; // getter and setter for jsonData public String execute() { // 处理请求并生成 JSON 数据 jsonData = "{\"key\":\"value\"}"; return SUCCESS; } } ``` 2. 在 `struts.xml` 配置文件中设置该 Action 的结果类型为 JSON。 ```xml <struts> <package name="default" extends="struts-default"> <action name="myAction" class="com.example.MyAction"> <result type="json"> <param name="root">jsonData</param> </result> </action> </package> </struts> ``` 3. 在 Action 中设置响应头。 ```java public class MyAction extends ActionSupport { private String jsonData; // getter and setter for jsonData public String execute() { // 处理请求并生成 JSON 数据 jsonData = "{\"key\":\"value\"}"; // 设置响应头 HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("application/json"); return SUCCESS; } } ``` 通过在 Action 中获取 HttpServletResponse 对象,可以设置响应头的内容类型为 "application/json"。 这样,当请求触发该 Action 时,Struts2 将会通过 JSON 结果类型将 JSON 数据返回给客户,并设置响应头的内容类型为 "application/json"。 请注意,以上代码仅为示例,你需要根据自己的需求进行相应的定制和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值