现在网上已有很多通过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-name>ImageServlet</servlet-name>
<servlet-class>org.apache.taglibs.image.ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImageServlet</servlet-name>
<url-pattern>/servlet/org.apache.taglibs.image.ImageServlet</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>http://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?http://www.xvna.com" 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?http://www.xvna.com" 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>