📄 checkcode.java
字号:
package com.student.action;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class CheckCode extends HttpServlet {
/**
* Constructor of the object.
*/
public CheckCode() {
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.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
// 生成随机类
Random random = new Random();
System.out.println("heiheiheihei");
// 设置验证码的位数
int length = 5;
// 产生验证码
String checkcode = "";
char code;
int number;
/*String chinese = "网站的内容需要授权才能访问";
for (int i = 0; i < length; i++) {
number = random.nextInt(chinese.length());
code = chinese.charAt(number);
checkcode += code;
}
System.out.println(checkcode);*/
for(int i=0; i<length; i++)
{
number = random.nextInt(26);
if(number % 2 == 0) //0-9数字
code = (char)('0' + (char)(number % 10));
else // A-Z
code = (char)('A' + (char)(number % 26));
checkcode += code+"";
}
// 在内存中创建图象
int width = (int) Math.ceil(length * 16), height = 22;
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
// 设定背景色
g.setColor(Color.WHITE);
g.fillRect(0, 0, width, height);
// 画边框
g.setColor(Color.GRAY);
g.drawRect(0, 0, width - 1, height - 1);
// 随机产生25条干扰线,使图象中的认证码不易被其它程序探测到
for (int i = 0; i < 25; i++) {
int x1 = random.nextInt(width);
int y1 = random.nextInt(height);
int x2 = random.nextInt(width);
int y2 = random.nextInt(height);
g.setColor(Color.GRAY);
g.drawLine(x1, y1, x2, y2);
}
// 设定字体,画验证码
g.setColor(Color.BLUE);
g.setFont(new Font("Arial", Font.BOLD | Font.ITALIC,18));
g.drawString(checkcode, 5, 18);
// 将认证码存入SESSION
// session
HttpSession session = request.getSession();
request.setAttribute("rando",checkcode);
session.setAttribute("rando", checkcode);
System.out.println(checkcode);
// 图象生效
g.dispose();
// 输出图象到页面,
// response.getOutputStream() 响应所对应的输出流
// 图像显示在页面上
ImageIO.write(image, "JPEG", response.getOutputStream());
// 把图像显示在页面上
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -