Struts +Ajax下返回json数据总结

1、通过示例来实现Struts返回json数据,

在MyEclipse下添加的Struts支持,直接引入core 类库即可。

struts配置文件如下,以peron为例进行演示:

 1 <struts>
 2     <constant name="struts.devMode" value="true"></constant>
 3     <constant name="struts.i18n.encoding" value="utf-8"></constant>
 4     <package name="default" namespace="/" extends="json-default">
 5         <action name="person_*" class="com.aaa.controller.PersonAction" method="{1}">
 6             <result name="test1" type="json">
 7             </result>
 8             <result name="success">/success.jsp</result>
 9             <result name="error">/error.jsp</result>
10         </action>
11     </package>
12 </struts>

PersonAction示例:

public class PersonAction extends BaseAction {
    private Person person;
    private List<Person> list;
    private Map<String,Object> map;
    public List<Person> getList() {
        return list;
    }
    public void setList(List<Person> list) {
        this.list = list;
    }
    public Map<String, Object> getMap() {
        return map;
    }
    public void setMap(Map<String, Object> map) {
        this.map = map;
    }
    public Person getPerson() {
        return person;
    }
    public void setPerson(Person person) {
        this.person = person;
    }
    PersonService p=new PersonService();
    
    public String execute(){
        p.save(person);
        return SUCCESS;
    }
    //查询返回json
    public String query(){
        System.out.println(person);
        return "test1";
    }
    
    //测试返回各种类型的json
    public String queryAll(){
        Person p=new Person();
        p.setId(1);
        p.setName("张三");
        p.setSex("男");
        p.setBirthday(Date.valueOf("1996-1-8"));
        Person p1=new Person();
        p.setId(2);
        p.setName("张三2");
        p.setSex("男");
        p.setBirthday(Date.valueOf("1996-2-8"));
        
        list=new ArrayList<Person>();
        list.add(p);
        list.add(p1);
        
        map=new HashMap<String, Object>();
        map.put("01", p1);
        map.put("0", p);
        
        return "test1";
    }
}

jsp页面示例:

<script src="js/jquery-1.11.3.min.js"></script>
    <script>
        //ajax提交表单
        function doSubmit(){
            var url="person_queryAll.action";
            $("#fm1").attr("action",url);
            $("#fm1").submit();
        }
        
        //ajax提交数据并返回json
        function doAjax(){
            var person={
                "person.id":1,
                "person.name":"李四",
                "person.sex":"男",
                "person.birthday":"1999-1-1"
            };
            $.ajax({
                url:"person_query.action",//提交地址
                type:"post",//
                data:person,
                dataType:"json",
                success:function(data){
                    console.log(data.person.id+":"+data.person.birthday);
                },
                error:function(e){
                    alert(e);
                }
            });
        }
    
    </script>
  </head>
  
  <body>
   <form action="person" method="post" id="fm1">
            <p>用户名:<input type="text" name="person.name"/></p>
            <p>性别:<input type="text" name="person.sex" value="男"/></p>
            <p>出生日期:<input type="text" name="person.birthday" value="1998-1-1"/></p>
            <p>
            <input type="submit" value="注册"/>
            <input type="button" value="查询返回json" onclick="doSubmit()"/>
            <input type="button" value="ajax提交数据" onclick="doAjax()"/>
            </p>
        </form>
  </body>

执行查询返回json按钮的结果如下:

可以看到带有get属性的都可以返回json数据

执行 ajax提交数据 按钮 的结果如下:

 

posted @ 2018-03-20 17:54  光辉哥  阅读(533)  评论(0)    收藏  举报