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. php连接mysql

    一.php连接mysql的函数 1.mysql_connect 作用:连接mysql eg:$con=mysql_connect('localhost','root','123456'); 2.mys ...

  2. Java系列笔记(4) - JVM监控与调优

    目录 参数设置收集器搭配启动内存分配监控工具和方法调优方法调优实例     光说不练假把式,学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之.通过学习,我觉得JVM ...

  3. hash-3.hashCode

    1.有一个类Person,有两个字段age和name,我重写Object类的equal方法来比较两个对象的age和name是否相等,但是不重写hashCode. package com.hash; p ...

  4. 【转】CentOS环境下yum安装LAMP(Linux+Apache+Mysql+php)

    此种方法很简单.每次都用源码编译,浪费好多时间啊! 同样的网站程序在Linux下运行要比在windows下快出不少,所以决定使用Linux的发行版CentOS ,本文主要讲解在CentOS下使用yum ...

  5. Android内存性能优化(内部资料总结)

    eoe上看到的一个很好的文章 摘抄了下来留着自己看看 刚入门的童鞋肯能都会有一个疑问,Java不是有虚拟机了么,内存会自动化管理,我们就不必要手动的释放资源了,反正系统会给我们完成.其实Java中没有 ...

  6. javascript基础07

    javascript基础07 1.节点 元素.childNodes : 属性 只读 属性 子节点列表集合 元素.childNodes 只包含子节点,不包含孙节点 DOM节点的类型有很多种,w3c标准有 ...

  7. cocos2d-x 内存管理浅析

    Cocos2d-x用create创建对象, 这个方法已经被引擎封装成一个宏定义了:CREATE_FUNC, 下面是这个宏定义的实现: #define CREATE_FUNC(__TYPE__) \   ...

  8. 网页中的CSS换行控制

    在进行DivCSS布局时,需要对文本进行控制,向大家介绍一下,CSS中控制换行的四种属性.一.white-space 可以实现HTML中PRE标签的效果,以及单元格的noWrap效果.语法: whit ...

  9. JAVA_HOME path classpath 以及cmd编译运行java代码

    JAVA_HOME PATH CLASSPATH 三者的区别:安装完jdk之后,首先在环境变量里面添加JAVA_HOME ,例如安装路径为C:\Program Files\Java\jdk1.6.0_ ...

  10. JavaScript深入浅出2-表达式和运算符

    慕课网教程视频地址:Javascript深入浅出 表达式是指能计算出值的任何可用程序单元 原始表达式:常量.直接量 3.14,“test” 关键字 null,this 变量 i,k,j 表达式含:原始 ...