`
wangking717
  • 浏览: 262531 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

补上JSP的验证码程序

阅读更多

突然发现,写了好些验证码程序,唯独JAVA的通用数字验证码没写,赶快补上,以后直接拿来主义。

 

曾写的的验证码:

 

PHP问答验证 -> http://wangking717.iteye.com/admin/blogs/898267

 

JAVA图片验证码 -> http://wangking717.iteye.com/blog/764307

 

captcha.jsp代码:

 

 

<%@ page  pageEncoding = "gb2312" contentType="image/jpeg" import = "javax.imageio.*,java.util.*,java.awt.image.*,java.awt.*" %>
<%! 
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); 
        } 
%> 
<% 
//设置页面不缓存 
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); 

// 获取图形上下文 
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(new Color()); 
//g.drawRect(0,0,width-1,height-1); 


// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到 
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); 
} 

// 取随机产生的认证码(4位数字) 
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 
session.setAttribute("rand",sRand); 


// 图象生效 
g.dispose(); 

// 输出图象到页面 
ImageIO.write(image, "JPEG", response.getOutputStream()); 

//关闭流 
out.clear(); 
out=pageContext.pushBody();   
%> 

 

有什么好的提议可留言,谢谢。

分享到:
评论

相关推荐

    webshell,包含asp,php,aspx,jsp

    对于任何Web应用程序,都应采用OWASP(开放网络应用安全项目)的最佳实践,比如使用参数化查询防止SQL注入,对用户输入进行过滤和转义以抵挡XSS攻击,以及使用验证码和令牌机制对抗CSRF。 总的来说,Webshell的防护...

    JSP源码jsp物流中心仓储信息管理系统(源代码+论文+开题报告)

    JSP(Java Server Pages)是一种基于Java技术的服务器端脚本语言,它被广泛应用于构建动态网页和Web应用程序。《JSP源码jsp物流中心仓储信息管理系统》是一款专门针对物流中心仓储管理而开发的应用系统,主要利用JSP...

    这是一个用语言JSP和SQL数据库的一个约会网站,可以重复。.rar

    部署过程包括打包JSP应用为WAR文件,然后上传到服务器的Web应用程序目录。 【测试与维护】 开发完成后,需要进行各种测试,如单元测试、集成测试和性能测试,确保功能正常且性能良好。网站上线后,还需要定期进行...

    [论坛社区]JspRun!社区论坛系统 v6.0 UTF-8 安装版 _6_utf8.rar

    8. **移动设备支持**:响应式设计,确保在手机和平板等移动设备上也能流畅浏览和参与讨论。 9. **统计分析**:提供访问量、活跃用户等数据统计,帮助管理员了解论坛运营状况。 10. **多语言支持**:UTF-8编码确保...

    梦想新闻发布系统-正式版

    程序基于 JSP + JavaBean 开发,数据库可以使用Access,MySql,MSSQL,Oracle数据库。 开发平台:Win2003 + Apache2.0.52 + Tomcat5.54 + Mod_jk 1.2.6 + JDK1.5 程序正常运行需要JVM(Java虚拟机)1.5以上的版本。 ...

    java实现工作流

    JVM提供了内存管理、垃圾回收等功能,使得Java程序可以在不同的操作系统上运行。 **2.3.5 JSP访问SQL Server 2000数据库** JSP可以通过JDBC驱动程序连接到SQL Server 2000数据库。通过编写SQL语句,可以在JSP页面...

    基于JAVA的安全电子商务(毕设论文).doc

    - **广义上**,电子商务涵盖了整个贸易活动的电子化,不仅限于交易本身,还包括广告宣传、客户服务等环节。 - **狭义上**,则主要指通过互联网完成的商品或服务交易。 - 按照参与主体的不同,电子商务可大致分为...

    ecology7详细安装说明

    ,登录时需要输入验证码,验证码文件位于C:\WEAVER\ecology\WEB-INF\code.key,使用记事本打开获取验证码。 注册成功后,用户将看到相应的成功提示,至此,Ecology7的安装和配置过程全部完成。这个过程需要对操作...

    php面试题(PHP软件工程师面试宝典)

    - **CHAR**: 固定长度字符串,即使存储的字符串长度不足也会补空格填充。 - **VARCHAR**: 变长字符串,只占用实际存储字符串所需的字节数加上额外的字节用于记录字符串长度。 #### 7. 程序输出结果 给定 PHP 代码...

Global site tag (gtag.js) - Google Analytics