`

spring mvc 实现的验证码功能

阅读更多
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
@RequestMapping("/checkCodeAction/")
public class CheckCode extends HttpServlet {

 public CheckCode() {
  super();
 }

 public void destroy() {
  super.destroy(); 
 }

 public void init() throws ServletException {
  super.init();
 }

 public Color getRandColor(int s, int e) {
  Random random = new Random();
  if (s > 255) s = 255;
  if (e > 255) e = 255;
  int r = s + random.nextInt(e - s);
  int g = s + random.nextInt(e - s);
  int b = s + random.nextInt(e - s);
  return new Color(r, g, b);
 }
 
 @RequestMapping("service.do")
 public void service(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  //禁止缓存
  response.setHeader("Pragma", "No-cache");
  response.setHeader("Cache-Control", "No-cache");
  response.setDateHeader("Expires", 0);
  // 指定生成的响应是图片
  response.setContentType("image/jpeg");
  int width = 200;
  int height = 60;
  BufferedImage image = new BufferedImage(width, height,
    BufferedImage.TYPE_INT_RGB);    //创建BufferedImage类的对象
  Graphics g = image.getGraphics();     //创建Graphics类的对象
  Graphics2D g2d=(Graphics2D)g;      //通过Graphics类的对象创建一个Graphics2D类的对象
  Random random = new Random();      //实例化一个Random对象
  Font mFont = new Font("华文宋体", Font.BOLD, 30);  //通过Font构造字体
  g.setColor(getRandColor(200, 250));     //改变图形的当前颜色为随机生成的颜色
  g.fillRect(0, 0, width , height);     //绘制一个填色矩形

  //画一条折线  
  BasicStroke bs=new BasicStroke(2f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); //创建一个供画笔选择线条粗细的对象
  g2d.setStroke(bs);     //改变线条的粗细
  g.setColor(Color.DARK_GRAY);  //设置当前颜色为预定义颜色中的深灰色
  int[] xPoints=new int[3];
  int[] yPoints=new int[3];
  for(int j=0;j<3;j++){
   xPoints[j]=random.nextInt(width - 1);
   yPoints[j]=random.nextInt(height - 1);
  }
  g.drawPolyline(xPoints, yPoints,3);
  //生成并输出随机的验证文字  
  g.setFont(mFont);  
  String sRand="";
  int itmp=0;
  for(int i=0;i<4;i++){
   if(random.nextInt(2)==1){
    itmp=random.nextInt(26)+65; //生成A~Z的字母
   }else{
    itmp=random.nextInt(10)+48; //生成0~9的数字
   }
   char ctmp=(char)itmp;
   sRand+=String.valueOf(ctmp);
   Color color=new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110));
   g.setColor(color);
   /****随机缩放文字并将文字旋转指定角度**/
   //将文字旋转指定角度
   Graphics2D g2d_word=(Graphics2D)g;
   AffineTransform trans=new AffineTransform();
   trans.rotate(random.nextInt(45)*3.14/180,15*i+10,7);
   //缩放文字
   float scaleSize=random.nextFloat()+0.8f;
   if(scaleSize>1.1f) scaleSize=1f;
   trans.scale(scaleSize, scaleSize);
   g2d_word.setTransform(trans);
   /************************/
   g.drawString(String.valueOf(ctmp),30*i+40,16);

  }
  //将生成的验证码保存到Session中
  HttpSession session=request.getSession(true);
  session.setAttribute("randCheckCode",sRand);
  g.dispose();
  ImageIO.write(image,"JPEG",response.getOutputStream());
 }

} 

网上找的 尚未测试仅供参考!
分享到:
评论

相关推荐

    spring mvc实现验证码登录注册功能

    用spring mvc实现带有验证码的登录注册功能模块,代码比较完整详细,适合于毕业设计的登录注册功能,可以根据自己的需要进行修改。 个人环境为:eclipse2019、mysql、和tomcat8.5

    基本的spring mvc + spring security实现的登录(无数据库)

    Spring MVC是Spring框架的一部分,用于处理Web应用程序的请求-响应模型,而Spring Security则是一个强大的安全管理框架,提供了认证和授权功能,帮助开发者保护应用免受恶意攻击。 1. **Spring MVC**: - **核心...

    spring mvc实现登录

    本篇文章将深入探讨如何利用Spring MVC来实现一个登录功能。 1. **Spring MVC简介** Spring MVC通过分离业务逻辑、数据处理和用户界面,使得开发过程更为清晰。它提供了DispatcherServlet作为入口点,处理所有的...

    spring mvc,spring, hibernate 整合登录实例

    通过以上步骤,我们可以成功地将Spring MVC、Spring和Hibernate整合在一起,实现一个完整的登录功能。这样的实例不仅有助于学习者理解各框架的协同工作方式,而且为实际项目提供了可复用的基础结构。在实践中,还...

    Spring MVC 中 短信验证码功能的实现方法

    在Spring MVC框架中实现短信验证码功能,主要涉及前端与后端的交互以及第三方短信平台的集成。以下将详细讲解这一过程的关键步骤。 首先,我们需要一个短信接口,这通常是通过购买第三方服务来获得的。比如,一些...

    SSM实现登录验证码功能

    在这个“SSM实现登录验证码功能”的项目中,我们将探讨如何在SSM框架下添加验证码功能,以增强用户登录的安全性。 首先,验证码功能的基本目的是防止恶意自动化程序(如机器人或爬虫)进行非法操作,如频繁尝试登录...

    Spring01_验证码登录功能_

    9. **测试**:为了确保验证码功能的正确性,我们需要进行单元测试和集成测试,包括验证码生成、会话存储、验证逻辑等各个环节。 通过这个"Spring01_验证码登录功能_"项目,我们可以学习到如何在Spring框架下实现一...

    人事管理系统(注解 Mybatis+Spring+Spring MVC框架整合AJAX+JQuery实现登录、注册以及验证码和验证注册用户信息,包括数据库备份)

    三期答辩课程设计,人事管理系统Mybatis+Spring+Spring MVC框架整合AJAX+JQuery实现登录、注册以及验证码和验证注册用户信息,包括数据库备份,课设说明,答辩PPT,Windows下sts(eclipse) 。

    spring整合kaptcha验证码的实现

    其中,eclipse是主要的开发工具,mybatis是持久层框架,spring是主要的框架,springmvc是基于spring的mvc框架,而kaptcha是验证码生成工具。 在kaptcha的使用方面,本文主要介绍了两种使用方式:方式一是在spring-...

    spring 2 mvc

    Spring MVC 是一个基于Java的轻量级Web应用框架,它是Spring框架的重要...通过这个实例,初学者可以学习到如何搭建Spring MVC项目、编写Controller、配置视图解析器、实现验证码功能等,从而加深对Spring MVC的理解。

    java springmvc实现验证码功能

    java springmvc实现验证码功能 java springmvc实现验证码功能是指在java web开发中使用springmvc框架来实现验证码功能的过程。验证码是指在用户登录或注册过程中,服务器端生成的一张图片,图片中包含随机字母、...

    Spring验证码

    下面将详细介绍如何在Spring MVC项目中实现验证码功能。 首先,验证码的生成通常涉及到随机数生成和图像处理技术。在Spring项目中,我们可以使用Java的`java.util.Random`类生成一组随机数字或字母,然后通过Java的...

    ssm框架(spring+spring mvc +mybatis)实现登录和用户列表展示

    总的来说,SSM框架结合了Spring的依赖注入、Spring MVC的MVC设计模式和MyBatis的简单数据库操作,为开发人员提供了一套高效且灵活的Web开发工具,帮助我们轻松地完成登录和用户列表展示等常见功能。通过深入理解和...

    patchca整合Spring MVC

    在本文中,我们将深入探讨如何将`patchca`与`Spring MVC`框架进行整合,以实现高效、美观的验证码生成功能。验证码(CAPTCHA)在Web应用中扮演着至关重要的角色,它能有效防止自动化的恶意操作,如机器人注册、垃圾...

    Spring MVC + 注解 +SqlServer 框架

    在这个已经运行成功的Spring MVC框架中,已经实现了登录功能。这通常包括以下步骤: 1. 用户向服务器发送登录请求,请求可能包含用户名和密码。 2. 控制器接收到请求,通过`@RequestParam`获取参数。 3. 使用`@...

    springMVC实现用户注册及登陆

    在本文中,我们将深入探讨如何使用Spring MVC框架来实现用户注册和登录功能。Spring MVC是Spring框架的一个核心组件,主要用于构建Web应用程序。由于在描述中提到没有涉及Service层和DAO层,我们将主要关注控制器...

    验证码反爬-超级鹰打码平台-验证码点选、验证码滑动资源

    在网络安全和反爬虫技术领域,验证码是一种常用的方法,用于防止自动化的机器人程序对网站进行恶意操作,如数据抓取或滥用服务。本资源包针对验证码反爬提供了相关的工具和资料,主要涉及到“超级鹰打码平台”以及...

    struts2+spring3验证码登录实例

    在这个"struts2+spring3验证码登录实例"中,验证码功能是一个重要的安全措施,它可以防止恶意的自动登录尝试或机器人攻击。验证码通常由一串随机生成的字符或数字组成,用户需要在输入框中正确输入才能完成登录。...

    Spring MVC 实例

    在这个实例中,我们将深入探讨如何使用Spring MVC、Spring以及JdbcTemplate来实现一个包含注册和登录功能的Web应用。 首先,Spring MVC通过DispatcherServlet作为前端控制器,接收HTTP请求并分发到相应的处理器。在...

Global site tag (gtag.js) - Google Analytics