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;
}
这段代码不是很理解有人帮忙解决一下吗? 谢谢噢

解决方案 »

  1.   

    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
    }
      

  2.   

    1 这个应该是Struts2处理的。
    2 把这个Map放入了InputStream,然后通过StreamResult进行处理的(类似与struts2的下载。 可以看到 strtus.xml中配置的success 处理方式是 type=stream 懂?)3 前台 页面 js 可以接受这个流处理。4 给点建议: 为什么不用dwr?非要写流里面自个处理?