struts2响应AJAX


1发送ajax请求使用stream进行响应

Result的type属性的stream取值。

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方法,获得流对象。

2.发送ajax请求使用json响应

2.1 加入jar包

struts2-json-plugin-2.3.16.1.jar

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对象

 将msg的内容封装为InputStream对象

 结果的类型必须为stream,将流对象的名字赋值给inputName属性

 将需要使用json格式响应到客户端的数据封装到list集合

 给ulist属性赋值,自动调用ulist对应的get方法

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM