一、常用注册验证码
1、servlet(需要配web.xml)或controller(需要配springMVC.xml)
package com.cpkf.notpad.controller.commonController;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Filename: VisualCodeController.java
* Description: 验证码控制器
* Company:
* @author: Jiang.hu
* @version: 1.0
* Create at: May 30, 2011 4:00:17 PM
* modified:
*/
@Controller
public class VisualCodeController {
@RequestMapping(value="visualCode.do",method={RequestMethod.GET,RequestMethod.POST})
public void getVisualCode(HttpServletRequest request,HttpServletResponse response){
//设定图片长宽
int width = 68;
int height = 22;
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
//得到缓冲区Graphics对象
Graphics graphics = img.getGraphics();
//画背景,颜色浅
graphics.setColor(getRandColor(200, 250));
graphics.fillRect(0, 0, width, height);
//画边框
graphics.setColor(getRandColor(0, 255));
graphics.drawRect(0, 0, width - 1, height - 1);
//随机产生两条干扰线
graphics.setColor(getRandColor(160, 200));
Random random = new Random();
for(int i = 0;i < 2;i ++){
int x = random.nextInt(width);
int y = random.nextInt(height);
int x1 = random.nextInt(width);
int y1 = random.nextInt(height);
graphics.drawLine(x, y, x1, y1);
}
//随机产生几个点
graphics.setColor(getRandColor(160, 200));
for(int i = 0;i < 10;i ++){
int x = random.nextInt(width);
int y = random.nextInt(height);
graphics.drawLine(x, y, x, y);
}
//随机产生四个字符,并设置其颜色、字体、大小以及位置
Font font = new Font("Times New Roman",Font.ITALIC | Font.BOLD, 22);
StringBuffer sb = new StringBuffer();
char[] ch = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
int index,length = ch.length;
for(int i = 0;i < 4;i ++){
index = random.nextInt(length);
graphics.setColor(getRandColor(20, 130));
graphics.setFont(font);
graphics.drawString("" + ch[index], (i * 15) + 3, 18);
sb.append(ch[index]);
}
//字符串放入session
request.getSession().setAttribute("checkCode", sb.toString());
//生成图片
graphics.dispose();
//禁止图像缓存
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "No-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
//创建二进制输出流并输出
ServletOutputStream sos = null;
try {
sos = response.getOutputStream();
ImageIO.write(img, "jpeg", sos);
sos.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(sos != null){
try {
sos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public Color getRandColor(int lower,int upper){
Random random = new Random();
lower = lower > 255 ? 255 : lower;
lower = lower < 1 ? 1 : lower;
upper = upper > 255 ? 255 : upper;
upper = upper < 1 ? 1 : upper;
if(lower > upper){
int temp = upper;
upper = lower;
lower = temp;
}
int r = lower + random.nextInt(upper - lower);
int g = lower + random.nextInt(upper - lower);
int b = lower + random.nextInt(upper - lower);;
return new Color(r, g, b);
}
}
2、jsp
<img id="visualCode" alt="visualCode" src="<c:url value='/visualCode.do'/>">
<a href="javascript:reloadVerifyCode();"><spring:message code="message.account.visualCode.notClear"/></a>
3、js
/*
* 改变图片链接,如果自己构造url,需要在页面添加base属性,动态添加前缀
* 用下面的方式可以自动保存前缀
* */
function reloadVerifyCode(){
var imgSrc = $("#visualCode");
var src = imgSrc.attr("src");
imgSrc.attr("src",changeUrl(src));
}
function changeUrl(url){
var timeNow = new Date().getTime();
if((url.indexOf("?")) >= 0){
url = url.substring(0,url.indexOf("=") + 1);
url = url + timeNow;
} else {
url = url + "?time=" + timeNow;
}
return url;
}
分享到:
相关推荐
Maven 使用一种基于项目对象模型(Project Object Model,POM)的概念,通过 POM 文件来管理项目的配置、依赖关系、构建过程等。这使得开发者可以专注于编写代码,而不需要花费大量时间在构建配置上。 ** Maven 的...
**Maven** 是一个项目管理和综合工具,它帮助开发者管理项目依赖,构建项目,并提供了统一的构建过程。在本项目中,Maven通过其配置文件pom.xml管理所有相关的库依赖,如Spring、SpringMVC、MyBatis和Shiro等。 **...
《爱旅行项目》是一个基于SSM(Spring、SpringMVC、MyBatis)和Maven多模块架构开发的旅游服务应用程序。该项目旨在提供一个全面的旅游服务平台,涵盖了从信息浏览、预订服务到支付结算等一系列功能。以下是项目中...
Maven是一个项目管理和综合工具,通过`pom.xml`配置文件管理项目的依赖关系,构建过程和插件等。 9. **IDE支持**: `.idea`目录的存在表明该项目可能是在IntelliJ IDEA这样的集成开发环境中创建的,IDE提供了代码...
总之,这个基于Servlet的项目是一个综合性的Web应用实例,涵盖了用户认证、数据操作和安全防护等多个关键点。对于初学者来说,这是一个很好的实践平台,可以加深对Servlet和Web开发的理解。而对于经验丰富的开发者,...
| Maven | 项目构建管理 | 3.6.0+ | | alibaba Druid | 数据库连接池 | 1.2.6 | | MySQL | 数据库 | 5.6+ | | com.github.pagehelper | 分页插件 | 1.3.1 | | com.alibaba.fastjson | 数据解析工具 | 1.2.76 | | ...
- 项目构建管理工具:maven; - 前端页面框架:[layui 2.4.x](https://layui.com/)、[layuicms 2.0](http://layuicms.com/)、[dtree](https://fly.layui.com/extend/dtree/)、[echarts]...
在本节 "[SSH+Maven+...通过学习SSH的认证与授权机制、Maven的项目管理技巧以及Bootstrap的界面设计,你将能够构建出既安全又美观的Java Web应用。这节课的内容对任何希望在Java Web领域深化理解的开发者都极具价值。
本项目以"旅游管理"为主题,通过集成开发环境IntelliJ IDEA(简称IDEA)创建了一个基于Maven构建的Java Web应用。项目旨在实现旅游平台的基本功能,如用户登录、注册、浏览分类、以及搜索等服务。在此过程中,我们...
这是一个基于JavaWeb技术,利用SSM(Spring、SpringMVC、MyBatis)框架和MySQL数据库构建的企业级电商系统源码。在这个项目中,开发者采用了经典的三层架构模式,包括表现层(Presentation Layer)、业务逻辑层...
- **Maven**:项目构建工具,管理依赖关系。 - **MySQL**:作为关系型数据库,存储系统数据。 - **Eclipse/IntelliJ IDEA**:作为开发IDE,提供代码编写和调试环境。 - **Git**:版本控制工具,协同开发和版本管理。...
【标题】:“基于SpringBoot的藏区特产销售平台”是一个使用Java技术和SpringBoot框架构建的电子商务项目,旨在为藏区的特色产品提供一个在线销售的平台。该项目可能涵盖了商品管理、订单处理、用户交互以及支付集成...
在开发过程中,开发者可能会使用IDE(如Eclipse或IntelliJ IDEA)进行编码,使用版本控制系统(如Git)管理代码,使用Maven或Gradle构建项目,并通过Tomcat或Jetty等应用服务器运行和部署应用。此外,单元测试和集成...
- **自动化构建**:通过Maven或Gradle自动构建项目,生成可部署的WAR或JAR文件。 - **容器化部署**:利用Docker将应用打包成容器,方便在不同环境中快速部署。 通过以上分析,我们可以看到Java BBS系统是一个涵盖...
- **Maven**:项目构建工具,管理依赖关系。 - **MySQL**:数据库系统,存储用户信息、图书数据、订单数据等。 - **Eclipse/IntelliJ IDEA**:Java开发IDE,辅助编码和调试。 - **Tomcat**:应用服务器,部署和运行...
- 使用Maven或Gradle作为项目构建工具,管理依赖。 - 后端开发涉及Spring的AOP、DI特性,以及SpringMVC的Controller、Service、DAO层设计。 - MyBatis的XML配置文件或注解方式定义SQL语句。 - JSON格式进行前后端...
同时,该项目采用了MyBatis作为持久层框架,Maven作为项目构建工具,确保了代码的组织有序和开发效率。 验证码生成与验证是防止恶意自动化脚本攻击的重要手段。通常,服务器端会生成一串随机字符串或图像,并将其...
`Mvn`是Apache Maven的缩写,是一个项目管理和综合工具,主要用于Java项目,它管理依赖关系、构建生命周期以及提供了一套统一的构建过程。而`Redis`则是一款高性能的键值存储系统,常用于缓存、消息队列和分布式计数...
该项目名为“基于ssm+vue智能交互式在线网上花店”,是一个综合性的电子商务平台,集成了后端的SSM框架(Spring、SpringMVC、MyBatis)与前端的Vue.js技术,旨在提供一个智能化、交互性强的线上购物体验。...
4. **测试框架**:SpecRunner是用于Scala的测试运行器,它可以集成到Sbt或Maven等构建工具中,自动运行测试用例并报告结果。 5. **开源软件**:开源项目鼓励协作和共享,但同时也可能面临维护问题。用户在使用时...