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. TP3.1 中URL和APP区别

    1.__URL__指当前模块地址,就是当前的action的地址.(每个__action都是一个模块)    eg:当前打开config.html,那么config.html里边的__URL__/sav ...

  2. 下位机多个".c, .h"文件的相互包含及排版

    一.背景: 自从接触单片机编程以来,由于工作上的需要,不可避免的时常会接手别人的代码,但常常由于上一位同事的编码随意性有点大,导致可读性非常的差,有时候不得不完全舍弃原有代码,推倒重来,无形中增加了工 ...

  3. 【C语言入门教程】1.2 函数库 和 链接

    程序员可以不需要从头开始设计每一个函数,完成用C语言命令所实现的函数非常罕见.因为所有的C语言编辑器都提供能完成各种常见任务函数,如printf()函数等.C语言编译器的实现者已经编写了大部分常见的通 ...

  4. 通过url地址传递base64加密参数遇到的问题整理

    1. base64的加密解密方法在C#的类库中就有 QueryString中的加号变成了空格问题 Server.UrlEncode(username),获取到的编码又将等于号变成了%3d; 到底改怎么 ...

  5. linux 中断理解

    1.进程.线程只针对的是应用层,而内核调用.驱动没有这种概念,调用的都是内核调用里相同的函数或变量,所以应用层多个应用操作同个硬件时,特别是要加互斥操作,8250通过cs针脚决定发送数据给哪个串口 2 ...

  6. redis-string-统计

    package com.ztest.redis.string; import org.junit.Test; import redis.clients.jedis.Jedis; import com. ...

  7. Interleaving String leetcode

    Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given:s1 = ...

  8. Xcode 8 打印输出: Class PLBuildVersion is implemented in both...

    在xcode8中,屏蔽了一些奇怪的输出之后,又发现了一个.具体啥原因还不是太清楚.但是可以解决这个问题,让其停止打印这个信息. 在 info.plist 中,添加两个键值对: 针对photo: key ...

  9. jquery版时钟(css3实现)

    做时钟的主要原因是因为喜欢,觉得它好看(本人对特效有点爱不释手……).做的时候感觉工程量会有点大,做着做着发现实现起来其实并不难,只要理清思绪,其实还蛮简单的(我制作东西喜欢整体方向制定好,然后边做边 ...

  10. r-cnn学习系列(三):从r-cnn到faster r-cnn

    把r-cnn系列总结下,让整个流程更清晰. 整个系列是从r-cnn至spp-net到fast r-cnn再到faster r-cnn.  RCNN 输入图像,使用selective search来构造 ...