• struts2生成验证码时的一个小问题


    前几天在网上copy了一段代码,关于struts2生成验证码,原本拷贝下来的myeclipes报错,原因是下面这三个类访问权限问题:

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. import com.sun.image.codec.jpeg.ImageFormatException;  
    2. import com.sun.image.codec.jpeg.JPEGCodec;  
    3. import com.sun.image.codec.jpeg.JPEGImageEncoder;  


    但是实际使用过程中是不会出错的,也可以通过设置将error改成warning,但是害怕老师那边过不去,所以去除了这三个类,改成下面的:

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. import javax.imageio.ImageIO;  



    其实原理很简单,原本com.sun.image.codec.jpeg这里面的类是将BufferedImage转换成ByteArrayInputStream,只是换了一种实现方法,源代码如下:

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. /** 
    2.      * 将BufferedImage转换成ByteArrayInputStream 
    3.      *  
    4.      * @param image 
    5.      *            图片 
    6.      * @return ByteArrayInputStream 流 
    7.      *  
    8.      */  
    9.     private static ByteArrayInputStream convertImageToStream(BufferedImage image)  
    10.             throws IOException {  
    11.   
    12.         ByteArrayInputStream inputStream = null;  
    13.         ByteArrayOutputStream bos = new ByteArrayOutputStream();  
    14.         ImageIO.write(image, "gif", bos);  
    15.         /* 
    16.         ImageIO.write(BufferedImage image,String format,OutputStream out); 
    17.             参数image表示获得的BufferedImage; 
    18.             参数format表示图片的格式,比如“gif”等; 
    19.             参数out表示输出流,如果要转成Byte数组,则输出流为ByteArrayOutputStream即可; 
    20.             执行完后,只需要toByteArray()就能得到byte[]; 
    21.         */  
    22.         byte[] bts = bos.toByteArray();  
    23.         inputStream = new ByteArrayInputStream(bts);  
    24.         return inputStream;  
    25.     }  

    这样就不会出现包访问权限的错误了,网站测试也正常。

  • 相关阅读:
    Hibernate的一些操作
    工作心得
    放款流程
    关于C#事件的自我构想和学习
    委托之winForm窗口间传递数据
    C#中string[]数组和list<string>泛型的相互转换 【转】
    关于注册界面中的一些规则设计时要注意
    系统界面设计---风格
    关于系统注册,做卡号重校验
    关于系统设计中的硬件开发
  • 原文地址:https://www.cnblogs.com/chbjaycn/p/3650353.html
Copyright © 2020-2023  润新知