jQuery与Struts2综合应用[stream/json]

一、使用stream类型的Result实现Ajax

具体步骤:

① 定义InputStream类型的成员变量及getter和setter

②具体业务方法中将要发送到客户端的json字符串赋值给成员变量

③编写struts.xml,定义stream生成响应数据类型及输出结果


二、配置Action的result

具体步骤:

①定义package,并继承struts-default

②使用<action>标签定义StreamResultAction类对应的名称和所在位置

③使用stream类型的result结果集

④使用<param>标签指定stream生成响应数据类型及输出结果

三 编写Action类 并继承自ActionSupport类 

注:定义的inputStream成员变量要和struts.xml<param>参数一致,并使用ByteArrayInputStream将要发送到客户端的数据赋值给成员变量

四 实现用户名验证

使用jQuery的Ajax方法发送数据到服务器端,获取stream类型的返回数据,并更新页面提示信息,进行拆解数据。需引入jQuery库

 <body>
   <div id="demo"></div>
   <table>
   <tr>
   <td>姓名:<input type="text" name="name" id="name" onblur="validate();"/></td>
   </tr>
   
   <tr>
   <td>密码:<input type="password" name="name" id="name"/></td>
   </tr>
   
   <tr>
   <td><center><input type="button" value="提交"/></center></td>
   </tr>
   </table>
   
   
   
  </body>

实现效果:

 


  使用JSON插件实现JSON类型的Result

 具体步骤:

①将struts2-json-plugin-xxx.jar加入到struts2工程下

②在struts.xml中编写<package>标签,并指定该package继承json-default

③在<package>标签下定义具体的<action>标签,将其子标签<result>的type属性指定为“json”

以用户登录为例:当服务器端接收到用户信息后,进行业务判断,然后返回JSON格式的数据

 

 JSON类型的Result的常用参数:

编写Action类重写execute()进行一系列判定,通过tojson()获取到map集合的值,注意的是这里需引入gson.jar包

 

两种实现方式:

    <script type="text/javascript">
    function validate(){
    //锁定到用户名文本框,并且取值
    var val=$('#name').val();

 $.post('json/jsontest','name='+val,function(data){
            //data就是打回到client的数据
            //强制让data从{}语句块形态    ----->表达式
              data=eval("("+data.result+")");
              //{"flag":"false"}
              if(data.flag=="false"){
                $("#demo").html("可用");
              }else{
                $("#demo").html("不可用");
              }
            
            }); 
    
     
     
    /*  $.post('json/jsontest','name='+val,function(data){
             //{"result":"{"flag":"false"}"}
                 data= data.result;
                 data=eval("("+data+")");
               if(data.flag=="false"){
              
                $("#demo").html("可用");
              }else{
                $("#demo").html("不可用");
              }
            },'json'); */
    }
    
    </script>

实现效果:

 

原文地址:https://www.cnblogs.com/WJ-163/p/5985144.html