现在网上已有很多通过jsp生成图片的方法。在sitemesh环境下工作的不是很好。
现介绍另一种可选方法:
用Apache Img Tag生成随即验证图片
步骤:
1、下载jakarta-taglibs-sandbox-image
如果需要支持gif,下载 PJA Toolkit(在http://www.eteks.com)
2、拷贝相应的jar文件到WEB-INF/lib目录下
3、配置web.xml文件
<servlet
<servlet-nameImageServlet</servlet-name
<servlet-classorg.apache.taglibs.image.ImageServlet</servlet-class
</servlet
<servlet-mapping
<servlet-nameImageServlet</servlet-name
<url-pattern/servlet/org.apache.taglibs.image.ImageServlet</url-pattern
</servlet-mapping
<taglib
<taglib-urihttp://jakarta.apache.org/taglibs/image-1.0</taglib-uri;
<taglib-location/WEB-INF/taglibs-image.tld</taglib-location
</taglib
4、配置sitemesh decorators.xml文件
<excludes
<pattern/decorators/*</pattern
<pattern/resources/*</pattern
<pattern/servlet/*</pattern
</excludes
5、jsp中使用
I.加入标签头
<%@ taglib uri="http://jakarta.apache.org/taglibs/image-1.0" prefix="img" %
II. 加入代码
<%
java.util.Random random = new java.util.Random();
String sRand="";
for (int i=0;i<4;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
}
session.setAttribute("rand",sRand);
%
<img:image
src="/images/blank.jpg"
refresh="true"
<img:text
text="<%= sRand%"
x="0"
y="0"
font="Arial"
bold="true"
size="12"
color="0xff0000"
/
</img:image
III.可选的一种对不同数字使用不同颜色
<img:image
src="images/blank.jpg"
refresh="true"
<img:text
text="2"
x="0"
y="0"
font="Arial"
bold="true"
size="12"
color="0xff0000"
/
<img:text
text="3"
x="25%"
y="0"
font="Arial"
bold="true"
size="12"
color="0x000000"
/
<img:text
text="4"
x="50%"
y="0"
font="Arial"
bold="true"
size="12"
color="0x00ff00"
/
<img:text
text="5"
x="75%"
y="0"
font="Arial"
bold="true"
size="12"
color="0x00ffff"
/
</img:image