最近有一个大作业想搞一个图片格式转换的webapp,其中用到了base64编码,用下边的代码如果是纯JAVA没有问题,但写在JSP里“return encoder.encode(data); ”这句就总报错“org.apache.jasper.JasperException”,网上查说是JSTL的问题,按http://www.cnblogs.com/yan5lang/archive/2009/07/15/1524161.html所给的解决方案用了没有解决,因为初用JSP,所以了解不是很深,不知道是我解决的不对还是问题出在其它地方,希望了解的大虾们给予指点,谢谢了。
PS:又有分了,重复发下贴,不好意思了。。
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="sun.misc.BASE64Decoder" %>
<%@ page import="sun.misc.BASE64Encoder" %>
<%!   
    String GetImageStr()
    {   //将图片文件转化为字节数组字符串,并对其进行Base64编码处理
        String imgFile = "1.jpg" ; //待处理的图片
        InputStream in = null;
        byte[] data = null;
        //读取图片字节数组
        try 
        {
            in = new FileInputStream(imgFile);        
            data = new byte[in.available()];
            in.read(data);
            in.close();
        } 
        catch (IOException e) 
        {
       e.printStackTrace();
        }
        //对字节数组Base64编码
        BASE64Encoder encoder = new BASE64Encoder();
        //try{
            return encoder.encode(data); //返回Base64编码过的字节数组字符串
        //}
        //catch(Exception e){
        //   return null;
        //}
    }
%>
<%!
    boolean GenerateImage(String imgStr)
    { //对字节数组字符串进行Base64解码并生成图片
        if (imgStr == null) //图像数据为空
            return false;
        BASE64Decoder decoder = new BASE64Decoder();
        try 
        {
            //Base64解码
            byte[] b = decoder.decodeBuffer(imgStr);
            for(int i=0;i<b.length;i++)
            {
                if(b[i]<0)
                { //调整异常数据
                    b[i]+=256;
                }
            }
            //生成jpeg图片
            String imgFilePath = "2.jpg" ; //新生成的图片
            OutputStream out1 = new FileOutputStream(imgFilePath);    
            out1.write(b);
            out1.flush();
            out1.close();
            return true;
        } 
        catch (Exception e) 
        {
            return false;
        }
    }
%>
<%
    String strImg = GetImageStr();
    GenerateImage(strImg);
    //if(!GenerateImage(strImg))
    //out.print("ssss");
%>