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 一个 hashmapmap.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的valueinputStream = new ByteArrayInputStream(addr.getBytes()); //创建输入流return Action.SUCCESS; //跳到 success}
------解决方案--------------------
代码没看出做什么什么有用的操作
------解决方案--------------------
1 这个应该是Struts2处理的。
2 把这个Map放入了InputStream,然后通过StreamResult进行处理的(类似与struts2的下载。 可以看到 strtus.xml中配置的success 处理方式是 type=stream 懂?)
3 前台 页面 js 可以接受这个流。。。处理。
4 给点建议: 为什么不用dwr?非要写流里面自个处理?