Struts2+Jquery实现Aajx

1.导入jar包,json-lib.jar,jsonplugin.jar

2.下载Jquery.js和jquery.json-2.2.j

3.定义Action类

package com.test.action;

import java.util.ArrayList;

import java.util.List;

import com.struts2.bean.*;

import net.sf.json.JSONObject; 

/**

 * 关于jsonplugin序列化的几点:

a.对于不想被序列化的属性,可以在他的get方法前加注释:      @JSON(serialize=false)

b.对于想改变json结果属性名称的,可以在他的get方法前加注释@JSON(name="属性名")

c. 带有transient修饰符与没有Getter方法的字段(field)都不会被串行化为JSON。

 * @author Administrator

 *

 */

public class AjaxAction {

 

 

 private String requestParamName;

 

 private User user;

 

 List<User> list=null;

 

 private String message;

 

 

 private String jsonResult;

 

 

 public String getJsonResult() {

  return jsonResult;

 }

 public void setJsonResult(String jsonResult) {

  this.jsonResult = jsonResult;

 }

 

 public String WW(){   

  //user=new User();

  list=new ArrayList<User>();

  User user1=new User();

  user1.setUsername("张三");

  user1.setAge(23);

  

  User user2=new User();

  user2.setUsername("李四");

  user2.setAge(25);

  

  

  

  list.add(user1);

  list.add(user2);

  

        this.message = "成功返回单个值";   

        this.jsonResult="另一个值";

        return "message";   

    }   

 public String LoadList()

 {

  System.out.println("从Ajax传进来的值:"+requestParamName);

  

  

  

  if(user!=null)

  {

   System.out.println("userName:"+user.getUsername());

  }

  

  

  

  return "getObj";

 }

 public String getRequestParamName() {

  return requestParamName;

 }

 public void setRequestParamName(String requestParamName) {

  this.requestParamName = requestParamName;

 }

 public String getMessage() {

  return message;

 }

 public void setMessage(String message) {

  this.message = message;

 }

 public User getUser() {

  return user;

 }

 public void setUser(User user) {

  this.user = user;

 }

 public List<User> getList() {

  return list;

 }

 public void setList(List<User> list) {

  this.list = list;

 }

}

4.定义Strutrs.xml

 <package name="AjaxAction" namespace="/" extends="json-default">

        <action name="ajaxAc" class="com.test.action.AjaxAction">

        

         <!--  指定json拦截器(默认没有),此拦截器用来将url参数转化为java对象,但此时

         在js中要指定contentType: "application/json" -->

         <interceptor-ref name="json"></interceptor-ref>

         <interceptor-ref name="defaultStack"></interceptor-ref>

         

        

             <result  name="message"  type="json">   

               

             </result>   

              <result  name="getObj"  type="json">   

               <!-- 指定不需要被返回的属性,默认返回带get方法的所有属性 -->

               <param name="excludeProperties">

                list

               </param>

               

               <!-- 指定需要被返回的属性,默认返回带get方法的所有属性 -->

               <param name="includeProperties">

                

               </param>

             </result> 

        </action>

       

    </package>

5.定义jsp文件(需要导入2个js文件)

<script type="text/javascript" src="js/jquery.js"></script>

 <script type="text/javascript" src="js/jquery.json-2.2.js"></script>

<input type="button" name="btnGetList" value="请求Aajx1" onclick="Ajax1()">

    

    <input type="button" name="btnGetList" value="请求GetJson" onclick="GetJson()">

6.定义js函数

function Ajax1()

  {

   var str=$("#txtDe").attr("value");

   

   var jsonModel={};

   jsonModel.requestParamName = str;

   

      //alert($.toJSON(jsonModel));

     // alert(jsonModel.serialize());

      $.ajax({

          type: "POST",

          contentType: "application/json",

          url: "ajaxAc!LoadList.action",

          data: jsonModel,

          dataType: "json",

          success: function(result) {

              alert($.toJSON(result));

              

  

          },

          error: function(result) {

              alert("调用失败:" + result.responseText);

          }

      });

  }

  

  

  

  function GetJson()

  {

   $.getJSON("ajaxAc!WW.action?requestParamName=张三",function(data){    

      //通过.操作符可以从data.message中获得Action中message的值    

      alert($.toJSON(data));

      $("#div").html("<font color='red'>message:"+data.message+

      "<br>requestParamName:"+data.requestParamName+

      "<br>jsonReuslt:"+data.jsonResult+"</font>");    

    });    

   

  }

重点提示(每次请求,都会默认将所以带get方法的属性,全部返回)

用<param>可配置返回的属性

<!-- 指定不需要被返回的属性,默认返回带get方法的所有属性 -->

               <param name="excludeProperties">

                list

               </param>

               

               <!-- 指定需要被返回的属性,默认返回带get方法的所有属性 -->

               <param name="includeProperties">

                

               </param>

备注(向Action中传入对象,没有实现)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值