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方法

 

posted @ 2016-11-13 09:46  光何  阅读(1869)  评论(0编辑  收藏  举报