struts2返回json

1 struts2返回json有两种方式。第一种是通过response的printWriter的write方法。第二种是通过struts2的json技术。


2 struts2的返回json技术。需要满足下面几个条件:
a:前台页面通过ajax请求,请求路径为action的路径。
如:<link rel="stylesheet" type="text/css" href="<%=basePath %>common/jquery/jquery-easyui-1.3.2/themes/icon.css">
<link rel="stylesheet" type="text/css" href="<%=basePath %>common/jquery/jquery-easyui-1.3.2/themes/default/easyui.css">
<script type="text/javascript" language="javascript" src="<%=basePath %>common/jquery/jquery-easyui-1.3.2/jquery-1.8.0.min.js"></script>
<script type="text/javascript" language="javascript" src="<%=basePath %>common/jquery/jquery-easyui-1.3.2/jquery.easyui.min.js"></script>



js中的ajax:
function test_btn_test_ajax(){
var url="http://localhost:8080/test20150411/testAjax!ajax";
$.ajax({
url:url,
type:"post",
dateType:"json",
success:function(data){
alert(JSON.stringify(data));
}
})
}


b:在struts2的配置文件中。action所对应的package标签 必须继承json-default。同时action的result的type值必须为json
如:<package name="testAjax" namespace="/" extends="json-default">
<action name="testAjax" class="exampleAjaxAction">
<result type="json"></result>
</action>
</package>


c:在所对应的类中,默认的是返回所有的get开头的方法。同时对应的action类的处理方法必须返回success字符串。
如:public String ajax(){
map.put("name","xcl");
map.put("password","123456");
System.out.println("设置了map");
return "success";//struts2的返回的json的技术,函数返回值一定要是success
}


//默认的get开头的方法都作为struts2的返回json的内容。
public Map getMap(){
return map;
}


注意:如果有的get方法不想被struts2作为返回json。可以在方法上添加json注解。
如:
//添加json注解:serialize=false表示该get方法不作为struts2返回json   默认情况下,凡是get开头的方法都作为struts2返回json的方法
@JSON(serialize=false)
public String getAaa() {
return aaa;
}






以上是struts2返回json的说明。
总结:1 前台通过ajax来发出请求。
      2 后台的struts2配置文件中package标签必须继承json-default,同时action标签的result标签的type值为json
      3 对应的action的类中的方法必须返回success字符串。默认情况下是所有get开头的方法都作为struts2返回json。如果不想被struts2作为返回json的方法。可以在方法上添加json注解:@JSON(serialize=false)






完整的例子:
jsp:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript" language="javascript" src="<%=basePath %>common/WDatePicker/WdatePicker.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

<link rel="stylesheet" type="text/css" href="<%=basePath %>common/jquery/jquery-easyui-1.3.2/themes/icon.css">
<link rel="stylesheet" type="text/css" href="<%=basePath %>common/jquery/jquery-easyui-1.3.2/themes/default/easyui.css">
<script type="text/javascript" language="javascript" src="<%=basePath %>common/jquery/jquery-easyui-1.3.2/jquery-1.8.0.min.js"></script>
<script type="text/javascript" language="javascript" src="<%=basePath %>common/jquery/jquery-easyui-1.3.2/jquery.easyui.min.js"></script>
<script type="text/javascript" language="javascript" src="<%=basePath %>common/json2.js"></script>
<style type="text/css">
.table_css{
border:#666666 solid 1px;
border-color:#666666 solid 1px;
}
.table_css tr{
border:#666666 solid 1px;
border-color:#666666 solid 1px;
}

.table_css tr td{
border:#666666 solid 1px;
border-color:#666666 solid 1px;
}
</style>
  </head>
  
  <body>
  <fieldset>
  <legend><s:property value="@com.util.Lan@getString('chaxun')"/></legend>
  <form name="form1" action="exampleQuery!list" method="post">
 
  <table>
  <tr>
  <input type="button" name="btn_testAjax" id="btn_testAjax" value="测试" οnclick="test_btn_test_ajax()"/>
 
  </tr>
  </table>
  </form>
  </fieldset>
  </table>
  </body>
  <script type="text/javascript" language="javascript">

function test_btn_test_ajax(){
var url="http://localhost:8080/test20150411/testAjax!ajax";
$.ajax({
url:url,
type:"post",
dateType:"json",
success:function(data){
alert(JSON.stringify(data));
}
})
}
  </script>
</html>




后台配置文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">


<struts>


    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <constant name="struts.devMode" value="true" />
<constant name="struts.objectFactory" value="spring"/>
<constant name="struts.ognl.allowStaticMethodAccess" value="true" />


<package name="testAjax" namespace="/" extends="json-default">
<action name="testAjax" class="exampleAjaxAction">
<result type="json"></result>
</action>
</package>
    
<!--<include file="./struts_web_common.xml"></include>-->
</struts>




后台类:
package com.example.action;


import java.util.HashMap;
import java.util.Map;


import org.apache.struts2.json.annotations.JSON;


import com.opensymphony.xwork2.ActionSupport;


public class ExampleAjaxAction extends ActionSupport{


private Map map=new HashMap();

private String aaa="";

public ExampleAjaxAction() {
super();
// TODO Auto-generated constructor stub
}


public Map getMap(){
return map;
}


public String ajax(){
map.put("name","xcl");
map.put("password","123456");
System.out.println("设置了map");
return "success";//struts2的返回的json的技术,函数返回值一定要是success
}


//添加json注解:serialize=false表示该get方法不作为struts2返回json   默认情况下,凡是get开头的方法都作为struts2返回json的方法
@JSON(serialize=false)
public String getAaa() {
return aaa;
}


public void setAaa(String aaa) {
this.aaa = aaa;
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值