现在网上已有很多通过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="http://www.itus.cn/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="http://www.itus.cnimages/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>
闽公网安备 35060202000074号