使用servlet编写一个验证码的例子
package com.topsuntech.gUnit_cnpo.common.servlet;
import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.image.*;
/*
* 功能:调用AuthServlet可以生成一个验证码图片,图片的宽度和高度可以自定义
* 调用格式: /servlet/AuthServlet?width=60&height=20
* 或者/servlet/AuthServlet
* 时间:2007-9-4
*
*
*/
public class AuthServlet extends HttpServlet {
private Font mFont=new Font("Times New Roman", Font.PLAIN,18);//设置字体
//static String AuthCode="";
// 处理post
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
doGet(request,response);
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
// 取得一个1000-9999的随机数
HttpSession session=request.getSession();//request.getSession(false)当参数为false时,有可能不创建session
//session.setAttribute("getImg",s);
response.setContentType("image/gif");
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
int width=60;
int height=20;
if(request.getParameter("width")!=null && !request.getParameter("width").equals(""))
width = Integer.parseInt(request.getParameter("width"));
if(request.getParameter("height")!=null && !request.getParameter("height").equals(""))
height = Integer.parseInt(request.getParameter("height"));
ServletOutputStream out=response.getOutputStream();
BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); //设置图片大小的
Graphics gra=image.getGraphics();
Random random=new Random();
gra.setColor(getRandColor(200,250)); //设置背景色
gra.fillRect(0,0,width,height);
gra.setColor(Color.black); //设置字体色
gra.setFont(mFont);
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
gra.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);
gra.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;
// 将认证码显示到图象中
gra.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
gra.drawString(rand,13*i+6,16);
}
//System.out.println("showimage="+sRand);
//session.setAttribute("getImg",sRand);
session.setAttribute("AuthCode",sRand);
//AuthCode = sRand;
//session.putValue("AuthCode",sRand);
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
//out.flush();
}
static 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);
}
static public String getAuthCode(HttpSession session){//返回验证
return (String)session.getAttribute("AuthCode");
}
分享到:
相关推荐
验证码通常以图像的形式呈现,所以我们还需要创建一个BufferedImage对象并绘制验证码字符串到这个图像上。使用Graphics2D类,我们可以设置字体样式、颜色,并在图像上绘制字符。同时,为了增加安全性,可以添加一些...
这里提到的"验证码例子程序"很可能是一个基于图像的验证码系统,由Java编写。 Java是一种广泛使用的面向对象的编程语言,具有跨平台的特性,非常适合开发Web应用程序。在Java中实现验证码,我们可以使用如下的技术...
总的来说,"jsp+servlet 生成验证码"是一个典型的前后端交互的例子,它展示了如何利用Java Web技术实现动态的、安全的验证码功能,为Web应用提供了一道基础的安全屏障。对于初学者来说,理解和实现这个过程有助于...
文章的描述部分表明了这篇文章将要详细介绍如何使用Servlet和JDBC技术来实现一个带验证码的登陆功能,这个例子对学习和工作都有很高的参考价值。 标签解释 文章的标签包括Servlet、JDBC、登陆、验证码登陆,这些...
在这个例子中,`check.jsp` 将用于显示生成的验证码,通常会包含一个表单,用户可以输入看到的验证码,然后提交表单进行验证。 3. **验证码生成**: - `checkCode.java` 文件包含了一个用于生成验证码的类。类中...
在"文件名称列表"中提到的"sproj"可能是项目文件或者源代码文件,这可能包含了一个Servlet的实现,用于处理验证码的生成和验证,以及与数据库交互的代码。你可能在其中看到以下关键部分: 1. **Servlet配置**:在`...
验证码是一种防止恶意自动提交的安全机制,通常会生成一个随机图像和字符串,用户需要正确输入才能完成登录。这个Servlet可能负责生成验证码,并在用户提交时验证其输入是否正确。 2. `IndexServlet.java`:这通常...
在这个例子中,`yanzheng.jsp`是生成验证码图像的页面,通过传递一个随机参数来防止浏览器缓存。 总结来说,JSP验证码的核心在于生成随机字符串和创建图像,同时确保在服务器端保存对应的验证码值。通过这种方式,...
在这个"simple servlet for login"项目中,我们可以推测这是一个基本的登录系统,使用Eclipse作为开发环境。 Eclipse是一款流行的集成开发环境(IDE),支持多种编程语言,包括Java。为了创建一个简单的Servlet登录...
mvc版留言本,采用jsp+javabean+servlet编写,即model2版 eclipse项目,可以直接导入,数据库类型mysql,支持分页,ajax验证码.代码内有详细注解,一看就明白,本人一直坚持简单易懂原则,帮助更多的初学者更快的掌握j2ee技术...
5. **JSP页面**:用于显示验证码的页面,可能会包含一个图像标签,该标签的src属性指向一个Servlet,该Servlet负责生成并输出验证码图像。 6. **Servlet**:这个项目中可能包含一个专门生成验证码的Servlet。它会...
**部署到Tomcat**:Tomcat是一个流行的开源Servlet容器,用于运行Java Web应用程序。用户需要将编译后的WAR文件放入Tomcat的webapps目录下,然后启动Tomcat,论坛系统就能通过浏览器访问了。 通过这个SSH小例子,...
在上述描述中,发送验证码的接口就是一个例子,它需要一个JSON对象包含"mobile"和"smstype"两个字段,通过POST请求发送到指定URL。 在Servlet端,接收到JSON数据后,可以使用如Jackson或Gson库来解析JSON字符串,...
- 编写一个Controller类,比如`LoginController`,并使用`@RequestMapping`注解来映射登录请求。例如:`@RequestMapping("/login")` - 在Controller方法中,使用`@RequestParam`或`@ModelAttribute`获取请求参数,...
4.24.3 一个例子 178 4.25 小结 179 第2部分 servlet篇 第5章 servlet与tomcat 182 5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 ...
在开发Web应用时,创建一个带有验证码的登录界面是提高安全性的重要步骤。在这个过程中,`forward`和`redirect`是两种常见的服务器端处理用户请求的方法。本文将详细讲解如何使用IntelliJ IDEA(Idea)来实现这个...
4.24.3 一个例子 178 4.25 小结 179 第2部分 servlet篇 第5章 servlet与tomcat 182 5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 ...
总结起来,"Demo.zip_DEMO" 提供了一个关于如何在Tomcat环境下部署和使用验证码功能的实例,这对于我们理解Web应用的安全机制、JSP编程以及服务器端验证逻辑的实现具有一定的学习价值。通过研究这个示例,开发者可以...
在本教程中,我们将探讨如何使用Spring MVC和Hibernate 4构建一个简单的登录系统。Spring MVC是Spring框架的一部分,专门用于处理Web应用的请求-响应模型,而Hibernate 4则是一个强大的对象关系映射(ORM)工具,...
4.24.3 一个例子 178 4.25 小结 179 第2部分 servlet篇 第5章 servlet与tomcat 182 5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 ...