使用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 ...
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)工具,...