struts2響應AJAX

1發送ajax請求使用stream進行響應

Result的type屬性的stream取值。javascript

1.1定義Action

 1 public class UserAction  2 {  3     private String uname;  4     //聲明輸入流對象
 5     private InputStream inputStream;  6     public InputStream getInputStream()  7  {  8         System.out.println("-------------getInputStream");  9         return inputStream; 10  } 11     public String getUname() 12  { 13         return uname; 14  } 15     public void setUname(String uname) 16  { 17         this.uname = uname; 18  } 19     //org.apache.struts2.dispatcher.StreamResult
20     /**驗證用戶名的惟一性***/
21     public String unameIsExists() 22  { 23         System.out.println("----------unameIsExists"); 24         List<String> list = new ArrayList<String>(); 25         list.add("admin"); 26         list.add("lisi"); 27         String msg=null; 28         if(list.contains(uname)) 29  { 30             msg="用戶名不可用..."; 31  } 32         else
33  { 34             msg="用戶名可用..."; 35  } 36         //將msg響應到客戶端,將msg中的數據封裝到InputStream
37         try
38  { 39             inputStream=new ByteArrayInputStream(msg.getBytes("UTF-8")); 40  } 41         catch (Exception e) 42  { 43             // TODO Auto-generated catch block
44  e.printStackTrace(); 45  } 46         return "ajax"; 47  } 48 }

 

1.2 配置UserAction

 1  <?xml version="1.0" encoding="UTF-8"?>
 2   <!DOCTYPE struts PUBLIC  3  "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  4  "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <package name="user" namespace="/" extends="struts-default">
 7         <action name="userAction_*" class="com.guangsoft.action.UserAction"
 8  method="{1}">
 9             <result name="ajax" type="stream">
10                 <param name="inputName">inputStream</param>
11             </result>
12         </action>
13     </package>
14 </struts>

 

1.3實現UI頁面

 1 <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
 2 <script type="text/javascript">
 3     function sendReuqest()  4  {  5     var uname=$("#uname").val();  6  $.post("userAction_unameIsExists.action","uname="+uname,function(data)  7  {  8  $("#sp").html(data);  9  }); 10  } 11 </script>
12 </head>
13 <body>
14     <input type="text" id="uname" onblur="sendReuqest()" />
15     <span id="sp"></span>
16 </body>

 

1.4總結 

當請求發送到服務器上,先執行處理請求的方法,經過處理請求的方法的返回值,查找對應的result,若是result的type屬性爲stream,自動調用inputName屬性對應的值對應的get方法,得到流對象。html

2.發送ajax請求使用json響應

2.1 加入jar包

struts2-json-plugin-2.3.16.1.jarjava

2.2 創建Action

 1 public class UserAction2  2 {  3     UsersDao dao = new UsersDaoImpl();  4     private Users user;  5     private List<Users> ulist;  6     //將ulist集合做爲json對象的集合響應到客戶端
 7     public List<Users> getUlist()  8  {  9         System.out.println("-----------getUlist"); 10         return ulist; 11  } 12     public Users getUser() 13  { 14         return user; 15  } 16     public void setUser(Users user) 17  { 18         this.user = user; 19  } 20     //org.apache.struts2.json.JSONInterceptor
21     /***驗證用戶名是否能夠:將不可用的用戶名所有響應到客戶端**/
22     public String unameExistsList() 23  { 24         System.out.println("-------------unameExistsList"); 25         ulist=dao.selectUanemByUname(user.getUname()); 26         //將ulist集合做爲json對象的集合響應到客戶端
27         return "ajax"; 28  } 29 }

 

 

2.3 配置UsersAction2 

 1 <?xml version="1.0" encoding="UTF-8"?>
 2  <!DOCTYPE struts PUBLIC  3  "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  4  "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6     <package name="user" namespace="/" extends="json-default">
 7         <action name="userAction_*" class="com.guangsoft.action.UserAction"
 8  method="{1}">
 9             <result name="ajax" type="stream">
10                 <param name="inputName">inputStream</param>
11             </result>
12         </action>
13         <action name="userAction2_*" class="com.guangsoft.action.UserAction2"
14  method="{1}">
15             <result name="ajax" type="json">
16                 <param name="root">ulist</param>
17             </result>
18         </action>
19     </package>
20 </struts>

 

2.4 創建UI頁面 

 1 <head>
 2     <script>
 3         function sendReuqest()  4  {  5             var uname=$("#uname").val();  6  $.post("userAction2_unameExistsList.action","user.uname="+uname,function(data)  7  {  8                 //alert(data);
 9                 var div=$("#div"); 10  div.html(""); //清空
11                 //對json集合進行遍歷
12  $(data).each(function(index,item) 13  { 14                     //alert(index+" "+item);
15                     //div.html(item.uname);
16  div.append("
17  <div>"+item.uname+"</div> 18                     ") 19  }); 20  }); 21  } 22     </script>
23 </head>
24 <body>
25     <!-- <input type="text" id="uname" onblur="sendReuqest()"/><span id="sp"></span> -->
26     <input type="text" id="uname" onkeyup="sendReuqest()" />
27     <div style="border: solid 1px red; width: 20%;margin-top: 5px" id="div">
28     </div>
29 </body>

 重點:將須要響應到客戶端的數據封裝爲inputStream對象jquery

 將msg的內容封裝爲InputStream對象ajax

 結果的類型必須爲stream,將流對象的名字賦值給inputName屬性apache

 將須要使用json格式響應到客戶端的數據封裝到list集合json

 給ulist屬性賦值,自動調用ulist對應的get方法服務器

相關文章
相關標籤/搜索