• 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;  20%;margin-top: 5px" id="div">
    28     </div>
    29 </body>

     重点:将需要响应到客户端的数据封装为inputStream对象

     将msg的内容封装为InputStream对象

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

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

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

     

  • 相关阅读:
    第一次考核代码及1000字感想
    假期周进度报告2
    《大道至简》读后感
    FileInputFormat看这一段源码
    hadoop源码学习(-)
    linux下的文件解压命令
    Hadoop工作原理
    hadoop程序实例
    linux常用命令
    hadoop的输入和输出文件
  • 原文地址:https://www.cnblogs.com/guanghe/p/6058162.html
Copyright © 2020-2023  润新知