struts-ajax配置实例

来源:互联网 发布:网络视频节目策划 编辑:程序博客网 时间:2024/05/17 05:02

   本文主要介绍已有struts2项目中进行ajax异步调用的配置过程

 

(1)原有项目中导入相关Jar包

   json-lib-2.1-jkd15.jar

   struts2-jsonplugin-2.2.3.jar

下载地址:http://download.csdn.net/detail/gf05011/4023308 (免费)

 

(2)jsp页面的ajax函数调用

 ....

<script type="text/javascript">

 function postUserInfo()  

      {

       var name = $("#name").val();

       var password=$("#password").val();   

     $.post("pages/test/viewList.action",{"username":username,"password":password},callback,"json");  //struts配置文件要有响应的方法viewList

      }

      function callback(data)//异步调用返回时调用此函数

      {  

       $("#testDetail table").remove();//删除原有记录

         //map对象的取值:modelMap是后台封装好的数据结构

        var modelMap= data.modelMap ;

         var model  = modelMap.model;

        //产生DOM元素

       var table = "<table ><tr><td>用户名称:</td><td>用户密码:</td></tr>" ;
       $.each(model,function(id,item){
         var tr = "<tr onclick=bindID('" +item.username+ "')><td>"+ item.username+"</td><td>"+item.password+"</td></tr>";
         table = table+tr ;
       });
       table = table + "</table>"
       $("#testDetail").append(table); //添加记录    
   } 

</script>

...

 <form  name=eform id="eform" method="post" onsubmit="return false;">

    用户名次:<input type="text" id="name" name="user.name"/><br>

    用户密码:<input type="text" id="password" name="user.password"/><br>

    <input type="button" value="submit" name="submit" onclick="postUserInfo();"/>//提交按钮,调用ajax函数postUserInfo()

</form>

<div id="showUserInfo"></div> //ajax返回数据内容的显示区域

.....

 

(3) struts配置文件user.xml配置响应方法

<?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>  
    <package name="test" namespace="/pages/test" extends="json-default">
         <action name="viewList" class="com.htjs.action.test.TestAction" method="viewList">
            <result type="json"/><!-- 处理类返回的结果是原页面 -->       
        </action>
           </package>
</struts>

 

(4)动作类TestAction.java

public class TestAction extends ActionSupport implements ServletRequestAware{

//该类继承了ActionSupport类。这样就可以直接使用SUCCESS, LOGIN等变量和重写execute等方法


 private static final long serialVersionUID = 4787323253923443929L;
 //后台的selvet应该进行序列化前台json数据后,才能进行接收
 private Test test;//Test对象必须序列化

 private Map modelMap = new HashMap() ;;//modelMap对象必须序列化

 }

public String viewList() throws IOException, OgnlException, JSONException, SQLException { 

   List<Test> list = new LinkedList<Test>();//list存储多个Tets对象实例
  Test test1 = new Test();
   test1.setUsername("aaa");  
   test1.setPassword("111");
   list.add(test1 );

   test1.setUsername("bbb");  
   test1.setPassword("222");
   list.add(test1 );
   modelMap.put("model", list);//将list对象放入modelMap对象,返回到页面
  return SUCCESS;

 

// test对象序列化方法
 public Test getTest() {
  return test;
 }

 public void setTest(Test test) {
  this.test = test;
 }
 
 // map对象序列化方法
 public Map getModelMap() {
  return modelMap;
 }

 public void setModelMap(Map modelMap) {
  this.modelMap = modelMap;
 }

 


 }

 

(5) Test对象:Test.java

public class Test {
 private String username ;
 private String password ;
 public String getUsername() {
  return username;
 }
 public void setUsername(String username) {
  this.username = username;
 }
 public String getPassword() {
  return password;
 }
 public void setPassword(String password) {
  this.password = password;
 }

}

 

 

 

原创粉丝点击