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"类型的 ...
随机推荐
- java框架
Dash Reports 1.0发布 Java报表解决方案 http://developer.51cto.com/art/201205/337189.htm http://www.oschina.ne ...
- 【解决】同一url的http请求所获取的结果总是相同
曾经在WP7写过一个通过HTTP获取网页内容的小程序,当时一直没能够解决: 有一个网址,在每次点击刷新之后页面所呈现的内容都是不同的.但是进行HTTP请求时,结果将会一直重复. 从网上查资料得知,在请 ...
- h5交互元素details标签
details是h5新增的交互元素,details与 summary 标签配合使用可以为 details 定义标题.默认情况下,不显示 details 标记中的内容.当用户点击标题时,会显示出 det ...
- 【bzoj1596】[Usaco2008 Jan]电话网络
题目描述 Farmer John决定为他的所有奶牛都配备手机,以此鼓励她们互相交流.不过,为此FJ必须在奶牛们居住的N(1 <= N <= 10,000)块草地中选一些建上无线电通讯塔,来 ...
- MFC关闭子窗口 如何把父窗口也一起关闭
在子窗口OnClose() 消息里添加: GetParent()->DestroyWindow();//子窗口关闭 父窗口也同样关闭
- 01Getting Started---Getting Started with ASP.NET Web API 2入门WebApi2
HTTP 不只是为了生成 web 页面.它也是建立公开服务和数据的 Api 的强大平台.HTTP 是简单的. 灵活的和无处不在.你能想到的几乎任何平台有 HTTP 库,因此,HTTP 服务可以达到范围 ...
- Java对文件中的对象进行存取
1.保存对象到文件中 Java语言只能将实现了Serializable接口的类的对象保存到文件中,利用如下方法即可: public static void writeObjectToFile(Obje ...
- BZOJ 2822: [AHOI2012]树屋阶梯
Description 求拼成阶梯状的方案数. Sol 高精度+Catalan数. 我们可以把最后一行无线延伸,所有就很容易看出Catalan数了. \(f_n=f_0f_{n-1}+f_1f_{n- ...
- 一个IP多个https站点配置
在一台主机上放置一个https网站,究竟该怎么配置?对于IIS和Apache以及Nginx等不同的服务器,方法是不同的,网上有很多教程,在此就不再赘述了. 至于一台主机,如何配置多个https网站呢? ...
- Python自动化装饰器问题解疑
问题一 到底是怎么执行的? import time def timer(timeout=0): def decorator(func): def wrapper(*args, **kwargs): # ...