Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3336820
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类: 系统运维

2009-09-16 16:35:58

1.直接通过URL传递
    最简单的方式是直接在中绑定图片的url地址,例如
        <s:Image source="assets/playerBack.png"/>
       
    优点:编码简单
    缺点:不能动态改变图片

2.通过servlet传递
前台代码
   
   

   

注意:如果采用以下代码,会出现安全沙箱问题
   

后台代码
    使用inputStream和outputStream对象通过Http协议向s:Image对象传递数据
    详见附录1

附录1

package servlet;

import java.io.IOException;  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
 
import java.io.*;  
import javax.servlet.*;  
import com.sun.image.codec.jpeg.*;//sun公司仅提供了jpg图片文件的编码api  
import javax.imageio.stream.*;  
import java.awt.image.BufferedImage;  
 
/** 
 *  
 * 显示文件的Servlet 
 * 负责从本地文件中读取图片, 
 *  
 */ 
public class bendi extends javax.servlet.http.HttpServlet implements 
        javax.servlet.Servlet {  
 
    /**
     *
     */
    private static final long serialVersionUID = 2227845411085655667L;

    private static final String GIF = "image/gif;charset=GB2312";// 设定输出的类型  
 
    private static final String JPG = "image/jpeg;charset=GB2312";  
 
    /* 
     * (non-Java-doc) 
     *  
     * @see javax.servlet.http.HttpServlet#HttpServlet() 
     */ 
    public bendi() {  
        super();  
    }  
 
    /* 
     * (non-Java-doc) 
     *  
     * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, 
     *      HttpServletResponse response) 
     */ 
    protected void doGet(HttpServletRequest request,  
            HttpServletResponse response) throws ServletException, IOException {  
        doPost(request, response);  
    }  
 
    /* 
     * (non-Java-doc) 
     *  
     * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, 
     *      HttpServletResponse response) 
     */ 
    protected void doPost(HttpServletRequest request,  
            HttpServletResponse response) throws ServletException, IOException {  
        String spec = request.getParameter("spec");// 输出图片的类型的标志  
 
       String imagePath = "c: \\pictures\\2.jpg";
       // String imagePath = "E: \\apache-tomat\\webapps\\ServletTest\\a.jpg";
       // String imagePath = "E: \\apache-tomat\\webapps\\test\\zz\\a.jpg";
        response.reset();  
 
        OutputStream output = response.getOutputStream();// 得到输出流  
        if (imagePath.toLowerCase().endsWith(".jpg"))// 使用编码处理文件流的情况:  
        {  
            response.setContentType(JPG);// 设定输出的类型  
            // 得到图片的真实路径  
 
            // 得到图片的文件流  
            InputStream imageIn = new FileInputStream(new File(imagePath));  
            // 得到输入的编码器,将文件流进行jpg格式编码  
            JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(imageIn);  
            // 得到编码后的图片对象  
            BufferedImage image = decoder.decodeAsBufferedImage();  
            // 得到输出的编码器  
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(output);  
            encoder.encode(image);// 对图片进行输出编码  
            imageIn.close();// 关闭文件流  
        }  
        if (imagePath.toLowerCase().endsWith(".gif"))// 不使用编码处理文件流的情况:  
        {  
            response.setContentType(GIF);  
            ServletContext context = getServletContext();// 得到背景对象  
            InputStream imageIn = context.getResourceAsStream(imagePath);// 文件流  
            BufferedInputStream bis = new BufferedInputStream(imageIn);// 输入缓冲流  
            BufferedOutputStream bos = new BufferedOutputStream(output);// 输出缓冲流  
            byte data[] = new byte[4096];// 缓冲字节数  
            int size = 0;  
            size = bis.read(data);  
            while (size != -1) {  
                bos.write(data, 0, size);  
                size = bis.read(data);  
            }  
            bis.close();  
            bos.flush();// 清空输出缓冲流  
            bos.close();  
        }  
        output.close();  
    }  



阅读(1748) | 评论(0) | 转发(0) |
0

上一篇:FLEX3分页总结

下一篇:适配器模式

给主人留下些什么吧!~~