如何用JSP生成验证码?

我需要的是细节,不需要生成验证码的类,我有,但我不知如何嵌入HTML中,主要是我的类是写在哪?是写在出现验证码的页面的<%%>中还是写在applet中?还是另写一个JSP... 我需要的是细节,不需要生成验证码的类,我有,但我不知如何嵌入HTML中,主要是我的类是写在哪?是写在出现验证码的页面的<% %>中还是写在applet中?还是另写一个JSP文件?还有,我看别人的验证码程序时,发现在页面显示验证码是用的<img 标签,那样的话,img标签中的src参数应该怎样设置?
请各位说的越详细越好!
只要能让我明白我在加50分高分!
我邮箱 wei.hualiang@163.com
展开
 我来答
l2598
2010-05-08 · TA获得超过192个赞
知道小有建树答主
回答量:285
采纳率:100%
帮助的人:213万
展开全部
<%@ page language="java" contentType="text/html; charset=GBK"
pageEncoding="GBK"%>
<%@ page import="java.awt.*" %>
<%@ page import="java.awt.image.*" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.imageio.*" %>
<%!
Color getRandColor(int fc,int bc){
Random r = new Random();
if(fc > 255)
fc = 255;
if(bc > 255)
bc = 255;
int red = fc + r.nextInt(bc - fc);
int green = fc + r.nextInt(bc - fc);
int blue = fc + r.nextInt(bc - fc);
return new Color(red,green,blue);
}
%>

<%
//设置页面不缓存
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
//下面开始了--生成图像
Random r = new Random();
int width = 60,height = 20;
BufferedImage pic = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics gc = pic.getGraphics();
gc.setColor(getRandColor(200,250));
gc.fillRect(0, 0, width, height);
gc.setFont(new Font("Times New Roman",Font.PLAIN,18));

gc.setColor(getRandColor(160,200));
for(int i=0;i<200;i++){
int x1 = r.nextInt(width);
int y1 = r.nextInt(height);
int x2 = r.nextInt(15);
int y2 = r.nextInt(15);
gc.drawLine(x1, y1, x2, y2);
}

gc.setColor(getRandColor(120,240));
for(int i=0;i<100;i++){
int x = r.nextInt(width);
int y = r.nextInt(height);
gc.drawOval(x, y, 0,0);
}

String rs="";
String rn="";
for(int i = 0;i<4;i++){
rn = String.valueOf(r.nextInt(10));
rs += rn;
gc.setColor(new Color(20+r.nextInt(110),20+r.nextInt(110),20+r.nextInt(110)));
gc.drawString(rn,13*i+6,16);
}

gc.dispose();
try{
session.setAttribute("code", rs);//设置session的属性code为生成的验证码(String类型),JSP中一般靠session等来传递并获得参数
}catch(Throwable t){
getServletContext().log(t.getMessage());//这里是写log,但要抓异常
}
ImageIO.write(pic,"JPEG",response.getOutputStream());//输出图片到一页面,就是流
out.clear();//后面一定要关闭流,因为在其他页面会有冲突
out = pageContext.popBody();
%>

上面时code.jsp
另一页面只写一句话就能看到图片:
<img src="code.jsp">
因为code.jsp可以向某个jsp页面输送一个图片,当然是验证码图片~
邴囡塞赫然
2020-03-13 · TA获得超过3789个赞
知道小有建树答主
回答量:3076
采纳率:26%
帮助的人:206万
展开全部
不知道你得类是怎么样的,
应该有0-9
10个数字的图片,然后在该类中随机生成一个n位的验证码,根据这个验证码获取到相应的数字图片的地址,存入一个数组,然后在类中人return该数组。这样在jsp中根据数组获得验证码相应的数字图片
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
likexs04030914
2010-05-08 · TA获得超过542个赞
知道小有建树答主
回答量:630
采纳率:0%
帮助的人:234万
展开全部
给我 邮箱
发一个给你!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式