Servlet生成随机验证码
来源:互联网 发布:淘宝店铺详情图片尺寸 编辑:程序博客网 时间:2024/05/19 20:57
Servlet部分:
package servlet;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
public class CreateImage extends HttpServlet {
String width;
String height;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//生成4位数字随机数
int randnumber=(int)Math.floor(Math.random()*10000);
String rand=String.valueOf(randnumber);
switch(rand.length()){
case 1: rand = "000"+rand; break;
case 2: rand = "00"+rand; break;
case 3: rand = "0"+rand; break;
case 4: break;
}
//生成图象
try {
response.setContentType("image/jpeg");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
BufferedImage image = new BufferedImage(Integer.parseInt(width), Integer.parseInt(height),
BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
// 设定背景色
g.setColor(Color.white);
g.fillRect(0, 0, Integer.parseInt(width), Integer.parseInt(height));
// 将认证码显示到图象中
g.setColor(Color.black);
g.setFont(new Font("Times New Roman", Font.PLAIN, 18));
g.drawString(rand, 15, 16);
// 随机产生88个干扰点,使图象中的认证码不易被其它程序探测到
Random random = new Random();
for (int i = 0; i < 88; i++) {
int x = random.nextInt(Integer.parseInt(width));
int y = random.nextInt(Integer.parseInt(height));
g.drawLine(x, y, x, y);
}
// 图象生效
g.dispose();
ServletOutputStream responseOutputStream = response.getOutputStream();
// 输出图象到页面
ImageIO.write(image, "JPEG", responseOutputStream);
// 以下关闭输入流!
responseOutputStream.flush();
responseOutputStream.close();
//随机数字放到session
request.getSession().setAttribute("randNumber", rand);
} catch (Exception e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
/**
* @function: 初试化方法,得到xml配置文件中数值
*/
public void init() throws ServletException {
width=getInitParameter("width");
height=getInitParameter("height");
}
}
xml配置部分:
<!-- 随即生成验证数字 -->
<servlet>
<servlet-name>picShow</servlet-name>
<servlet-class>servlet.CreateImage</servlet-class>
<init-param>
<param-name>width</param-name>
<param-value>60</param-value>
</init-param>
<init-param>
<param-name>height</param-name>
<param-value>22</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>picShow</servlet-name>
<url-pattern>/imageShow</url-pattern>
</servlet-mapping>
页面调用部分:
<img src="imageShow" />
- servlet随机生成验证码
- servlet随机生成验证码
- Servlet生成随机验证码
- Servlet生成随机验证码
- 用servlet生成随机验证码
- java Servlet 生成随机验证码
- Servlet生成随机验证码图片
- servlet生成随机图片验证码
- Servlet随机生成验证图片
- servlet 随机验证码
- 【Java】使用Servlet生成随机验证码图片
- Java Web:使用Servlet生成网页随机图片验证码
- 5.Servlet生成多位随机的验证码
- 【Servlet】生成指定长度随机验证码简化版
- java(15)--Servlet生成随机验证图片
- 生成随机验证码
- 随机生成验证码
- 生成随机验证码
- UE和UI (转)
- 关于强命名程序集
- Adapter(适配器)模式
- Java游戏开发日志(2007-6-7)
- 46个不可不知的生活小常识
- Servlet生成随机验证码
- 用VB实现将图片文件复制到剪贴板
- 解开 Windows 下的临界区中的代码死锁[zt]
- 关于在两台linux上架设rmi出现的问题
- J2ME软件的逆向工程注意事项(一)
- 喝咖啡好吗?(一)
- ajax 的status状态说明
- word,html格式互转换
- 喝咖啡好吗?(二)