您的位置:首页 > Web前端 > JQuery

jQuery与Struts2综合应用[stream/json]异步请求

2017-06-03 14:54 489 查看
博客园
首页
新随笔
联系
管理
订阅

随笔- 111  文章- 0  评论- 11 


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>




实现效果:
 


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: