servlet产生数字验证码
package com.sun.test;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.*;
public class getImg extends HttpServlet {
private Font mFont=new Font("宋体", Font.PLAIN,12);//设置字体
/**
* Constructor of the object.
*/
public getImg() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
//PrintWriter out = response.getWriter();
//取得一个1000-9999的随机数
String s="";
int intCount=0;
intCount=(new Random()).nextInt(9999);//返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和9999(不包括)之间均匀分布的 int值。
if(intCount<1000)intCount+=1000;
s=intCount+"";
//对session付值。
HttpSession session=request.getSession(true);
session.setAttribute("getImg",s);
response.setContentType("image/gif");
ServletOutputStream out=response.getOutputStream();
BufferedImage image=new BufferedImage(35,14,BufferedImage.TYPE_INT_RGB);
Graphics gra=image.getGraphics();
//设置背景色
gra.setColor(Color.yellow);
gra.fillRect(1,1,33,12);
//设置字体色
gra.setColor(Color.black);
gra.setFont(mFont);
//输出数字
char c;
for(int i=0;i<4;i++) {
c=s.charAt(i);
gra.drawString(c+"",i*7+4,11); //7为宽度,11为上下高度位置
}
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
public void init() throws ServletException {
// Put your code here
}
}
分享到:
相关推荐
本主题聚焦于一些关键的jsp编程实践中涉及的知识点,包括`MD5`加密,生成中文/数字验证码以及处理中文乱码问题。 首先,`MD5`是一种广泛使用的加密散列函数,产生一个128位(16字节)的散列值,通常以32个十六进制...
- 使用`javax.servlet.http.HttpSessionBindingListener`接口实现Session监听,当验证码过期或被替换时,自动移除旧的验证码。 - 对于高并发场景,可以考虑使用分布式Session存储,如Redis,以解决单台服务器Session...
文本验证码是指由随机生成的字符串或数字组成的验证码,而图片验证码则是指使用图像来表示的验证码。Java Servlet 可以生成这两种类型的验证码。 验证码生成算法 验证码生成算法是指生成验证码的算法。 Java ...
首先,验证码的生成通常涉及到随机字符的产生和图像的绘制。在JSP中,我们可以使用Java的`java.util.Random`类来生成随机数字和字母,然后结合`java.awt`和`javax.imageio`包中的类来创建图像并写入这些随机字符。`...
验证码通常由一组随机字符组成,可以是字母、数字或两者混合。在Java中,我们可以使用`java.util.Random`类和`Character`类来生成这些随机字符。首先,定义一个字符串包含所有可能的字符,然后通过随机索引来选取...
1. **随机数字或字母生成**:验证码通常由一组随机的数字或字母组成,以确保每次请求时都会得到不同的验证码。在Java中,我们可以使用`java.util.Random`类生成随机数,再结合字符集来创建随机字符串。 2. **图像...
3、编写一个servlet,在servlet中产生图形验证码 ------------------------------------------------------------ //1、给客户端作出的回应是以图片的方式来回应 response.setContentType("image/jpeg"); ...
在网页开发中,尤其是用户登录、注册、评论等场景,验证码能够有效地防止垃圾信息的产生,保护网站的安全。JSP(JavaServer Pages)作为服务器端的动态网页技术,可以方便地实现验证码的生成与验证。以下将详细介绍...
产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。 随机产生40条干扰线,使图象中的认证码不易被其它程序探测到 随机产生的颜色将验证码绘制到图像中 四位数字的验证码保存到Session中 将图像...
这样既提高了用户体验,减少了网络请求的等待时间,又保证了每次验证的独立性,避免了因多人同时使用同一验证码而产生的安全问题。在实现时,需要在JavaScript中发送Ajax请求到服务器,服务器生成新的验证码并返回,...
5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动...
5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动...
5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动...
5.1 servlet与servlet容器 182 5.2 servlet容器的分类 183 5.3 servlet和其他技术的比较 183 5.4 tomcat介绍 183 5.5 tomcat的安装与配置 184 5.5.1 安装tomcat 185 5.5.2 运行tomcat 186 5.5.3 tomcat启动...
3. **绘制验证码**:使用Graphics对象在图片上绘制背景色、边框颜色及随机生成的数字。其中数字存储在session中以便后续验证。 4. **输出图片**:通过 `JPEGCodec.createJPEGEncoder(os);` 和 `encoder.encode(image...
关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥...