永发信息网

在java页面上,用jsp,怎样写一个验证码

答案:1  悬赏:70  手机版
解决时间 2021-03-05 02:10
在java页面上,用jsp,怎样写一个验证码
最佳答案
//验证码生成页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page import = " java.awt.*,java.awt.image.*,javax.imageio.* " %>
<%@ page import = " java.io.OutputStream " %>
<%!
Color getRandColor( int fc, int bc){
Random random = new Random();
if (fc > 255 ) fc = 255 ;
if (bc > 255 ) bc = 255 ;
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
return new Color(r,g,b);
}
%>
<%
try {
response.setHeader( " Pragma " , " No-cache " );
response.setHeader( " Cache-Control " , " no-cache " );
response.setDateHeader( " Expires " , 0 );
int width = 60 , height = 20 ;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
OutputStream os = response.getOutputStream();
Graphics g = image.getGraphics();
Random random = new Random();
g.setColor(getRandColor( 200 , 250 ));
g.fillRect( 0 , 0 , width, height);

g.setFont( new Font( " Times New Roman " ,Font.PLAIN, 18 ));
g.setColor(getRandColor( 160 , 200 ));
for ( int i = 0 ;i < 155 ;i ++ )
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt( 12 );
int yl = random.nextInt( 12 );
g.drawLine(x,y,x + xl,y + yl);
}
String sRand = "" ;
for ( int i = 0 ;i < 4 ;i ++ ){
String rand = String.valueOf(random.nextInt( 10 ));
sRand += rand;
g.setColor( new Color( 20 + random.nextInt( 110 ), 20 + random.nextInt( 110 ), 20 + random.nextInt( 110 )));
g.drawString(rand, 13 * i + 6 , 16 );
}
session.setAttribute("vcode" ,sRand);
g.dispose();

ImageIO.write(image, "jpg" ,os);
os.flush();
os.close();
os = null ;
response.flushBuffer();
out.clear();
out = pageContext.pushBody();
}
catch (IllegalStateException e)
{
System.out.println(e.getMessage());
e.printStackTrace();
} %>

//验证码使用页面
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
function refresh(){
var co=document.getElementById("code");
co.src="vcode.jsp?vcode="+Math.random();
}
</script>
</head>

<body>
用户名:<input type="text" name="name"><br/>
<img id="code" title="验证码" src="vcode.jsp"> <a href="javascript:refresh();">换一张</a>
</body>
</html>
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
小学家校联系卡家长要写些什么?
怎样把10的5.4次方换算成几乘以10的6次方我要
有什么好看的小说吗?
创造的含义
康姿百德(南地店)在哪里啊,我有事要去这个地
为什么现在找工作那么难?是不是一定要大学毕
根据《合同法》的规定,在买卖合同中(  )
支原体感染可以吃螃蟹吗
忘记了微信的支付密码,但是不想用卡号来找回
泸州市第八中学校地址好找么,我有些事要过去
QQ最多可以一次删除多少好友
室内甲醛在0.12左右,会有危险吗?谢谢
支气管舒张实验,不正确的是()。
中国烟草甘肃欣大商贸有限责任公司武都路卷烟
x+y=45,x-y=9请问 x和y 分别是多少
推荐资讯
联想一体机,买了两年半,当时买了5200,现在
【游历】《神曲》中引导但丁游历天堂的人是()
红土地广告传媒公司地址在哪,我要去那里办事
海尔净水机5006-5的费水率是多少
过点且与抛物线有且只有一个公共点的直线有(
dnf冰龙巨剑和85传承巨剑士哪个好?
数码宝贝大师阶级问题
佛教放生日哪一天比较好
15岁的孩子经过几次教育还会在自己家偷钱怎么
求助:太胜社区居委会电话号码如题 谢谢了
武汉有学习营养学的地方吗?报考营养师有什么
食尚牛士我想知道这个在什么地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?