日期:2014-05-19  浏览次数:20714 次

关于java的异步刷新
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

public class StreamResultAction extends ActionSupport {

private static final long serialVersionUID = 1060242513636868903L;

private String cname;
private InputStream inputStream; // result类型为stream时,系统需要通过一个InputStream获取结果

public String searchCustomerAddress(){
// 此处只是模拟一个业务逻辑,表示通过客户名称获取客户地址
Map<String,String> map = new HashMap<String,String>();
map.put("mike", "Beijing");
map.put("john", "Shanghai");
map.put("jack", "guangzhou");

String addr = map.get(cname);
inputStream = new ByteArrayInputStream(addr.getBytes());

return Action.SUCCESS;
}
这段代码不是很理解有人帮忙解决一下吗? 谢谢噢。。。


------解决方案--------------------
Java code
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;

public class StreamResultAction extends ActionSupport {

private static final long serialVersionUID = 1060242513636868903L;

private String cname;
private InputStream inputStream; // result类型为stream时,系统需要通过一个InputStream获取结果

public String searchCustomerAddress(){
// 此处只是模拟一个业务逻辑,表示通过客户名称获取客户地址
Map<String,String> map = new HashMap<String,String>(); //new 一个 hashmap
map.put("mike", "Beijing"); //按照key:value 往map里塞值
map.put("john", "Shanghai");//按照key:value 往map里塞值
map.put("jack", "guangzhou");//按照key:value 往map里塞值

String addr = map.get(cname); //从map里取到key 为 cname的value
inputStream = new ByteArrayInputStream(addr.getBytes()); //创建输入流

return Action.SUCCESS;  //跳到 success
}

------解决方案--------------------
代码没看出做什么什么有用的操作
------解决方案--------------------
1 这个应该是Struts2处理的。
2 把这个Map放入了InputStream,然后通过StreamResult进行处理的(类似与struts2的下载。 可以看到 strtus.xml中配置的success 处理方式是 type=stream 懂?)

3 前台 页面 js 可以接受这个流。。。处理。

4 给点建议: 为什么不用dwr?非要写流里面自个处理?