struts2响应AJAX
1发送ajax请求使用stream进行响应
Result的type属性的stream取值。
1.1定义Action
public class UserAction
{
private String uname;
//声明输入流对象
private InputStream inputStream;
public InputStream getInputStream()
{
System.out.println("-------------getInputStream");
return inputStream;
}
public String getUname()
{
return uname;
}
public void setUname(String uname)
{
this.uname = uname;
}
//org.apache.struts2.dispatcher.StreamResult
/**验证用户名的唯一性***/
public String unameIsExists()
{
System.out.println("----------unameIsExists");
List<String> list = new ArrayList<String>();
list.add("admin");
list.add("lisi");
String msg=null;
if(list.contains(uname))
{
msg="用户名不可用...";
}
else
{
msg="用户名可用...";
}
//将msg响应到客户端,将msg中的数据封装到InputStream
try
{
inputStream=new ByteArrayInputStream(msg.getBytes("UTF-8"));
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return "ajax";
}
}
1.2 配置UserAction
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="user" namespace="/" extends="struts-default">
<action name="userAction_*" class="com.guangsoft.action.UserAction"
method="{1}">
<result name="ajax" type="stream">
<param name="inputName">inputStream</param>
</result>
</action>
</package>
</struts>
1.3实现UI页面
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript">
function sendReuqest()
{
var uname=$("#uname").val();
$.post("userAction_unameIsExists.action","uname="+uname,function(data)
{
$("#sp").html(data);
});
}
</script>
</head>
<body>
<input type="text" id="uname" onblur="sendReuqest()" />
<span id="sp"></span>
</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
public class UserAction2
{
UsersDao dao = new UsersDaoImpl();
private Users user;
private List<Users> ulist;
//将ulist集合作为json对象的集合响应到客户端
public List<Users> getUlist()
{
System.out.println("-----------getUlist");
return ulist;
}
public Users getUser()
{
return user;
}
public void setUser(Users user)
{
this.user = user;
}
//org.apache.struts2.json.JSONInterceptor
/***验证用户名是否可以:将不可用的用户名全部响应到客户端**/
public String unameExistsList()
{
System.out.println("-------------unameExistsList");
ulist=dao.selectUanemByUname(user.getUname());
//将ulist集合作为json对象的集合响应到客户端
return "ajax";
}
}
2.3 配置UsersAction2
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="user" namespace="/" extends="json-default">
<action name="userAction_*" class="com.guangsoft.action.UserAction"
method="{1}">
<result name="ajax" type="stream">
<param name="inputName">inputStream</param>
</result>
</action>
<action name="userAction2_*" class="com.guangsoft.action.UserAction2"
method="{1}">
<result name="ajax" type="json">
<param name="root">ulist</param>
</result>
</action>
</package>
</struts>
2.4 建立UI页面
<head>
<script>
function sendReuqest()
{
var uname=$("#uname").val();
$.post("userAction2_unameExistsList.action","user.uname="+uname,function(data)
{
//alert(data);
var div=$("#div");
div.html(""); //清空
//对json集合进行遍历
$(data).each(function(index,item)
{
//alert(index+" "+item);
//div.html(item.uname);
div.append("
<div>"+item.uname+"</div>
")
});
});
}
</script>
</head>
<body>
<!-- <input type="text" id="uname" onblur="sendReuqest()"/><span id="sp"></span> -->
<input type="text" id="uname" onkeyup="sendReuqest()" />
<div style="border: solid 1px red; width: 20%;margin-top: 5px" id="div">
</div>
</body>
重点:将需要响应到客户端的数据封装为inputStream对象
将msg的内容封装为InputStream对象
结果的类型必须为stream,将流对象的名字赋值给inputName属性
将需要使用json格式响应到客户端的数据封装到list集合
给ulist属性赋值,自动调用ulist对应的get方法
struts2响应AJAX的更多相关文章
- Struts2结合Ajax实现登录
前言:Struts2作为一款优秀的MVC框架,和Ajax结合在一起,用户就会有良好的体验,本篇博文我们来模拟一个简单的登录操作,实现Ajax的异步请求,其中Struts2进行的是链接处理,Action ...
- struts2实现ajax校验的2种方法
共同的一点是,Action都需要将一个方法暴露出来,给前端javascript调用 javascript的代码都是一样的: Js代码 function testAjax() { var $use ...
- Struts2对AJAX的支持
一.简介 struts2确实一个非常棒的MVC框架.这里部分记述一下struts2对AJAX的支持.实现AJAX有两种方式,一种是使用原生的javascript代码实现,一种是使用第三方 ...
- Struts2与Ajax的整合
整合: 导入jar包 sturts2-json-plugin-2.1.8.1.jar 说明: 在该jar包中有struts-plugin.xml文件 <struts> ...
- Struts2之ajax初析
Web2.0的随波逐流,Ajax那是大放异彩,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过插件实现),框架的整合只是使得JSON的创建变得异常简单, ...
- Struts2与ajax整合之缺点
之前有篇博客介绍了Struts2与ajax的整合,链接Struts2之-集成Json插件实现Ajax 这里不再累述,看以上博客. 此篇博客想吐槽一下Struts2的缺点--错误处理做的不好,怎么做的不 ...
- Struts2 利用AJAX 导出大数据设置遮罩层
Struts2 利用AJAX 导出大数据设置遮罩层 需求背景: 每次我们导出excel的时候 ,如果数据量很大,导出花费的时间会很长,页面却有没人任何反应,这个时候用户会认为系统有问题,要么关了页面, ...
- SpringMVC响应Ajax请求(@Responsebody注解返回页面)
项目需求描述:page1中的ajax请求Controller,Controller负责将service返回的数据填充到page2中,并将page2整个页面返回到page1中ajax的回调函数. 一句话 ...
- Struts2 处理AJAX请求
Struts2整合AJAX有2种方式: 使用type="stream"类型的<result> 使用JSON插件 使用type="stream"类型的 ...
随机推荐
- 小明系列问题――小明序列(LIS)
小明系列问题――小明序列 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit ...
- Hadoop 之Mong DB 之CentOS 6 使用 yum 安装MongoDB及服务器端配置
安装MongoDB的方法有很多种,可以源代码安装,在Centos也可以用yum源安装的方法.由于MongoDB更新得比较快,我比较喜欢用yum源安装的方法.64位Centos下的安装步骤如下: 1.准 ...
- oracle 行列转换的运用
问题: 员工表: A(E_ID,NAME,) 部门表: B(D_ID,D_NAME) 员工与部门关系:C(ID,E_ID,D_ID) SELECT A.E_ID,A.NAME ,B.D_NAME ...
- Homework
#include<stdio.h> #include<math.h> int main() { int a,b,c,l,p,s; printf("请输入三个数:&qu ...
- STL next_permutation和prev_permutation函数
利用next_permutation实现全排列升序输出,从尾到头找到第一个可以交换的位置, 直接求到第一个不按升序排列的序列. #include <iostream> #include & ...
- 小白死去活来的安装ros_qtc_plugin
在距离写上一篇有关ROS的文章已经过去了很久了.在这段时间内一直在积累,盼望着能够厚积薄发,但还是被无情的社会折磨的死去活来,深深的体会到了一般学校和重点学校找工作的差别,以及用人单位的区别对待.说到 ...
- 38 网络相关函数(六)——live555源码阅读(四)网络
38 网络相关函数(六)——live555源码阅读(四)网络 38 网络相关函数(六)——live555源码阅读(四)网络 简介 12)makeSocketNonBlocking和makeSocket ...
- linux下一个有意思的问题(文件名以短划线或空格开头)
linux下一个有意思的问题(文件名以短划线开头) 这本是无意中的一个发现. 在linux下,文件名中含有 - 是没有问题,但是如果文件名是以-作为第一个字符的,那么就比较麻烦了. 问题演示 看这里, ...
- jQuery常用API
jQuery API查询网址 http://jquery.cuishifeng.cn/ Dom和jquery相互装换 jquery对象[0] => Dom对象 Dom对象 => $(Dom ...
- 跨域解决方案二:使用JSONP实现跨域
跨域的实现方式有多种,除了 上篇文章 提到的CORS外,常见的还有JSONP.HTML5.Flash.iframe.xhr2等. 这篇文章对JSONP的跨域原理进行了探索,并将我的心得记录在这里和大家 ...