자바 Servlet 동적 인증 코드 이미지 예제 구현
package com.hacker;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.Date;
import java.util.Locale;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.bean.Student;
public class HackerServlet extends HttpServlet {
// 。
private int width=60;
// 。
private int height=20;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
BufferedImage buffImg=new BufferedImage(width,height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g=buffImg.createGraphics();
// 。
Random random=new Random();
g.setColor(Color.WHITE);
g.fillRect(0,0,width,height);
// , 。
Font font=new Font("Times New Roman",Font.PLAIN,18);
// 。
g.setFont(font);
// 。
g.setColor(Color.BLACK);
g.drawRect(0,0,width-1,height-1);
// 160 , 。
g.setColor(Color.GRAY);
for (int i=0;i<160;i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
//randomCode , 。
StringBuffer randomCode=new StringBuffer();
int red=0,green=0,blue=0;
// 4 。
for (int i=0;i<4;i++) {
// 。
String strRand=String.valueOf(random.nextInt(10));
// , 。
red=random.nextInt(110);
green=random.nextInt(50);
blue=random.nextInt(50);
// 。
g.setColor(new Color(red,green,blue));
g.drawString(strRand,13*i+6,16);
// 。
randomCode.append(strRand);
}
// Session 。
HttpSession session=req.getSession();
session.setAttribute("randomCode",randomCode.toString());
// 。
resp.setHeader("Pragma","no-cache");
resp.setHeader("Cache-Control","no-cache");
resp.setDateHeader("Expires", 0);
resp.setContentType("img/JPG");
// Servlet 。
ServletOutputStream sos=resp.getOutputStream();
ImageIO.write(buffImg, "JPG",sos);
sos.close();
}
}
물론 흔히 볼 수 있 는 인증 코드 형식 으로 개선 하기 위해 서 는 노력 이 필요 하 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.