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的更多相关文章

  1. Struts2结合Ajax实现登录

    前言:Struts2作为一款优秀的MVC框架,和Ajax结合在一起,用户就会有良好的体验,本篇博文我们来模拟一个简单的登录操作,实现Ajax的异步请求,其中Struts2进行的是链接处理,Action ...

  2. struts2实现ajax校验的2种方法

    共同的一点是,Action都需要将一个方法暴露出来,给前端javascript调用  javascript的代码都是一样的: Js代码   function testAjax() { var $use ...

  3. Struts2对AJAX的支持

    一.简介        struts2确实一个非常棒的MVC框架.这里部分记述一下struts2对AJAX的支持.实现AJAX有两种方式,一种是使用原生的javascript代码实现,一种是使用第三方 ...

  4. Struts2与Ajax的整合

    整合: 导入jar包 sturts2-json-plugin-2.1.8.1.jar 说明: 在该jar包中有struts-plugin.xml文件 <struts>            ...

  5. Struts2之ajax初析

    Web2.0的随波逐流,Ajax那是大放异彩,Struts2框架自己整合了对Ajax的原生支持(struts 2.1.7+,之前的版本可以通过插件实现),框架的整合只是使得JSON的创建变得异常简单, ...

  6. Struts2与ajax整合之缺点

    之前有篇博客介绍了Struts2与ajax的整合,链接Struts2之-集成Json插件实现Ajax 这里不再累述,看以上博客. 此篇博客想吐槽一下Struts2的缺点--错误处理做的不好,怎么做的不 ...

  7. Struts2 利用AJAX 导出大数据设置遮罩层

    Struts2 利用AJAX 导出大数据设置遮罩层 需求背景: 每次我们导出excel的时候 ,如果数据量很大,导出花费的时间会很长,页面却有没人任何反应,这个时候用户会认为系统有问题,要么关了页面, ...

  8. SpringMVC响应Ajax请求(@Responsebody注解返回页面)

    项目需求描述:page1中的ajax请求Controller,Controller负责将service返回的数据填充到page2中,并将page2整个页面返回到page1中ajax的回调函数. 一句话 ...

  9. Struts2 处理AJAX请求

    Struts2整合AJAX有2种方式: 使用type="stream"类型的<result> 使用JSON插件 使用type="stream"类型的 ...

随机推荐

  1. activti表结构

    1.结构设计 1.1.    逻辑结构设计 Activiti使用到的表都是ACT_开头的. ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的 ...

  2. [AngularJS] 入门

    什么是AngularJS AngularJS是Google开源的一款JavaScript MVC框架,弥补了HTML在构建应用方面的不足, 其通过使用指令(directives)结构来扩展HTML词汇 ...

  3. ggplo2学习笔记——基本图形类型

    1.散点图:又称散点分布图,是以一个变量为恨坐标,另一个变量为纵坐标,利用散点(坐标点)的分布形态反映变量统计关系的一种图形.可以用来确认两个变量之间的关系.绘制自由曲线.矩阵关联分析等. 2.条形图 ...

  4. Maven 跳过测试目录

    在命令行使用 mvn install -Dmaven.skipTests 或 mvn install -Dmaven.test.skip=true 或在pom.xml设置 <build> ...

  5. JS中的prototype(原文地址:http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html)

    JS中的phototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个 ...

  6. 如何在 CentOS 7 用 cPanel 配置 Nginx 反向代理

    导读 Nginx 是最快和最强大的 Web 服务器之一,以其高性能和低资源占用率而闻名.它既可以被安装为一个独立的 Web 服务器,也可以安装成反向代理 Web 服务器.在这篇文章,我将讨论在安装了 ...

  7. 在Android工程中运行main函数

    在main函数中右键 --> Run As --> Run Configurations.. Java Application中的类 --> Classpath --> Boo ...

  8. 一起入门python7之函数参数

    上一节课简单的讲了一下函数.那么今天来给大家讲一下函数参数.用案例说话哈.上一节课只是让大家有比较简单的了解,那么这节我们来细化一下哈.>>>def hello(x):        ...

  9. OpenCV高斯模型

    int main(int argc, char** argv) { //std::string videoFile = "E:\\C_VC_code\\Text_Photo\\dingdan ...

  10. 火狐浏览器,关闭ssl v3防护

    某些网站,没有及时更新,导致火狐觉得有安全隐患,不给访问. --------------- Hello bcasey9090, go to about:config, copy the next bo ...