Heim  >  Artikel  >  Java  >  Java generiert einen zufälligen Verifizierungscode für chinesische Schriftzeichen

Java generiert einen zufälligen Verifizierungscode für chinesische Schriftzeichen

巴扎黑
巴扎黑Original
2016-12-02 09:43:133919Durchsuche

Die Implementierung umfasst hauptsächlich zwei Klassen: Eine besteht darin, den Bestätigungscode zu generieren, und die andere besteht darin, festzustellen, ob die Eingabe des Bestätigungscodes korrekt ist. Das Implementierungsprinzip ist relativ einfach Bei der Überprüfung werden chinesische Zeichen an die Rezeption gesendet. Bei der Überprüfung wird der im Textfeld eingegebene Wert abgerufen und zum Vergleich mit dem Sitzungswert gesendet Das. 1. Klasse zum Generieren des chinesischen Zeichenverifizierungscodes
package com.veryCode;
import java.awt.Font;
import java.awt.Graphics; import java.awt.Graphics2D;
import java.io.IOException;
import java.imageio.ImageIO; 🎜 >import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse; *
* Generieren Sie einen zufälligen Bestätigungscode für chinesische Schriftzeichen
* @author feizi
* @Time 2015-1-30 15:16:55 Uhr
*/
public class DrawVeryCode erweitert HttpServlet {
private static final long serialVersionUID = -3002087466925846353L;
public static final int HEIGHT = 30; 🎜 >public void doGet(HttpServletRequest request,HttpServletResponse Response)
throws ServletException,IOException{
this.doPost(request, Response);
}
public void doPost(HttpServletRequest request,HttpServletResponse Response)
wirft ServletException,IOException{
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//Bildcache erstellen
BufferedImage bi = new BufferedImage(WIDTH, HEIGHT,
BufferedImage.TYPE_INT_RGB); 🎜>setBackGroundColor (g);
//Legen Sie den Rand fest
setBorder(g);
//Zeichnen Sie die Interferenzlinie
drawRandomLine(g);
//Generieren Sie ein zufälliges chinesisches Zeichen Bestätigungscode
String randomChar = drawRandomChar((Graphics2D)g);//Konvertierung erzwingen
//Speichern Sie den generierten zufälligen Bestätigungscode für chinesische Zeichen in der Sitzung
request.getSession().setAttribute("veryCode" , randomChar);
//Stellen Sie den Typ der Antwortinformationen auf den Bildtyp ein.
response.setContentType("image/jpeg");
response.setDateHeader ("expries", -1);
response.setHeader("Cache-Control", "no-Cache");
response.setHeader("Pargma", "no-Cache". ");
//Schreiben Sie das Bestätigungscode-Bild in den Browser
ImageIO.write(bi, "jpg", Response.getOutputStream());
}
/**
* Hintergrundfarbe festlegen
* @param g
* /
private void setBackGroundColor(Graphics g){
//Legen Sie die Hintergrundfarbe fest
g.setColor(Color.WHITE);
//Füllen Sie den Bereich
g.fillRect(0, 0, WIDTH, HEIGHT);
}
/**
* Rahmen setzen
* @param g
*/
private void setBorder(Graphics g){
//Legen Sie die Rahmenfarbe fest
g.setColor(Color .BLUE);
/ /Grenzbereich festlegen
g.drawRect(1, 1, WIDTH - 2, HEIGHT - 2);
/**
* Interferenzlinien zeichnen
* @param g
*/
private void drawRandomLine(Graphics g){
//Stellen Sie die Farbe der Interferenzlinie ein
g.setColor(Color.GREEN)//Stellen Sie die Anzahl der Linien ein und beginnen Sie mit dem Zeichnen
for (int i = 0; i < 40; i++) {
int x1 = new Random().nextInt(WIDTH);
int y1 = new Random().nextInt(HEIGHT); int x2 = new Random().nextInt(WIDTH) ;
int y2 = new Random().nextInt(HEIGHT);
//Zeichnung der Linie beginnen
g.drawLine(x1, y1, x2, y2);
}
}
/**
* Zeichne zufällige chinesische Zeichen
* @param g
*/
private String drawRandomChar(Graphics2D g){
StringBuffer sb = new StringBuffer();
//Set color
g.setColor(Color.RED) ;
//Schriftart festlegen
g.setFont(new Font("宋体", Font.BOLD, 20));
//Vorbereiten häufig verwendeter Schriftarten Chinese character set
String base = "u7684u4e00u4e86u662fu6211u4e0du5728u4ebau4eecu6709u6765u4ed6 u8fd9" +
"u4e0au7740u4e2au5730u5230u5927u91ccu8bf4u5c31u53bbu5b50u5f97u4e5fu548c" +
"u90a3u8981u4e0bu770bu5929u65f6u8fc7u51fau5c0 fu4e48u8d77u4f60u90fdu628a" +
"u597du8fd8u591au6ca1u4e3au53c8u53efu5bb6u5b66u53eau4ee5u4e3bu4f1au6837" +
"u5e74u60f3u751fu540cu8 001u4e2du5341u4eceu81eau9762u524du5934u9053u5b83" +
"u540eu7136u8d70u5f88u50cfu89c1u4e24u7528u5979u56fdu52a8u8fdbu6210u56de" + 
"u4ec0u8fb9u4f5cu5bf9u5f00u800cu5df1u4e9bu73b0u5c71u 6c11u5019u7ecfu53d1" + 
"u5de5u5411u4e8bu547du7ed9u957fu6c34u51e0u4e49u4e09u58f0u4e8eu9ad8u624b" + 
"u77e5u7406u773cu5fd7u70b 9u5fc3u6218u4e8cu95eeu4f46u8eabu65b9u5b9eu5403" + 
"u505au53ebu5f53u4f4fu542cu9769u6253u5462u771fu5168u624du56dbu5df2u6240" + 
"u654cu4e4bu6700u5149u4ea7u60c5u8defu5206u603bu6761u767du8bddu4e1cu5e2d" + 
"u6b21u4eb2u5982u88abu82b1u53e3u653eu513fu5e38u6c14u4e9 4u 7b2cu4f7fu5199" + 
" u519bu5427u6587u8fd0u518du679cu600eu5b9au8bb8u5febu660eu884cu56e0u522b" + 
"u98deu5916u6811u7269u6d3bu90e8u95e8u65e0u5f80u8239u671bu 65b0u5e26u961f" + 
"u5148u529bu5b8cu5374u7ad9u4ee3u5458u673au66f4u4e5du60a8u6bcfu98ceu7ea7" + 
"u8ddfu7b11u554au5b69u4e07u5c11u 76f4u610fu591cu6bd4u9636u8fdeu8f66u91cd" + 
"u4fbfu6597u9a6cu54eau5316u592au6307u53d8u793eu4f3cu58ebu8005u5e72u77f3" + 
"u6ee1u 65e5u51b3u767eu539fu62ffu7fa4u7a76u5404u516du672cu601du89e3u7acb" + 
"u6cb3u6751u516bu96beu65e9u8bbau5417u6839u5171u8ba9u76f8u7814u4ec au5176 " + 
"u4e66u5750u63a5u5e94u5173u4fe1u89c9u6b65u53cdu5904u8bb0u5c06u5343u627e " + 
"u4e89u9886u6216u5e08u7ed3u5757u8dd1u8 c01u8349u8d8au5b57u52a0u811au7d27" + 
"u7231u7b49u4e60u9635u6015u6708u9752u5" 34au706bu6cd5u9898u5efau8d76u4f4d" + 
"u5531 u6d77u4e03u5973u4efbu4ef6u611fu51c6u5f20u56e2u5c4bu79bbu8272u8138" + 
"u7247u79d1. u5012u775bu5229u4e16u521au4e14u7531u9001u5207u 661fu5bfcu665a" + 
"u8868u591fu6574u8ba4u54cdu96eau6d41u672au573au8be5u5e76u5e95u6df1u 523b" + 
"u5e73u4f1fu5fd9u63d0u786eu8fd1u4eaeu8f7bu8bb2u519cu53e4u9ed1u544au754c" + 
"u62c9u540du5440u571fu6e05u9633u7167u529eu 53f2u6539u5386u8f6cu753bu9020" + 
"u5634u6b64u6cbbu5317u5fc5u670du96e8u7a7fu5185u8bc6u9a8cu4f20u4e1au83dc" + 
"u722cu7761u5174u5f62u91cfu54b1u89c2u82e6u 4f53u4f17u901au51b2u5408u7834" + 
"u53cbu5ea6u672fu996du516cu65c1u623fu6781u5357u67aau8bfbu6c99u5c81u7ebf" + 
"u91ceu575au7a7au6 536u7b97u81f3u653fu57ceu52b3u843du94b1u7279u56f4u5f1f" + 
"u80dcu6559u70edu5c55u5305u6b4cu7c7bu6e10u5f3au6570u4e61u547cu6027u97f3" +
"u7b54u54e5u9645u65e7u795eu5ea7u7ae0u5e2eu5566u53d7u7cfbu4ee4u8df3u975e" + 
"u4f55u725bu53d6u5165u5cb8u6562u6389u5ffdu79 du88c5u9876u6025u6797u505c" +
"u606fu53e5u533au8863u822cu62a5u53f6u538bu6162u53d4u80ccu7ec6"; 
int x = 5; 
//控制字数,最多4个字 
for (int i = 0; i < 4; i++) { 
//设置字体旋转角度 
int Degree = new Random(). nextInt() % 30; 
//截取汉字 
String ch = base.charAt(new Random().nextInt(base.length())) + ""; 
//追加到sb中 
sb.append(ch); 
//顺时针旋转 
g.rotate(degree * Math.PI / 180, x, 20); 
//开始画汉字 
g.drawString(ch, x, 20); 
//逆时针旋转 
g.rotate(-(degree * Math.PI / 180), x, 20); 
x += 30; 

return sb.toString(); 

public static void main(String[] args) { 
String s = "1234565236985"; 
System.out.println(s.charAt(5) + ""); 
System.out.println(new Random().nextInt()); com.veryCode; 
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; 
/**
* Informationen zum Bestätigungscode, die auf der Bestätigungsseite eingegeben wurden
* @author feizi
* @time 2015-2-2 8:14:22 AM
*/ 
public class ResultServlet erweitert HttpServlet { 
private static final long serialVersionUID = -4023881398470853660L; 
public void doGet(HttpServletRequest request,HttpServletResponse Response) 
wirft ServletException,IOException{ 
doPost(request, Response);
}
public void doPost(HttpServletRequest request,HttpServletResponse Response)
throws ServletException,IOException{
request.setCharacterEncoding("utf-8"); .setContentType("text/html;charset=utf-8");
//Der korrekte Bestätigungscodewert wurde generiert
String activateC = (String) request.getSession().getAttribute("veryCode"); 🎜>//Der vom Benutzer im Browser eingegebene Wert des Bestätigungscodes
String veryCode = request.getParameter("code");
PrintWriter out = Response.getWriter();
if(null == veryCode ||. "".equals(veryCode)){
out.println("Bitte geben Sie den Bestätigungscode ein..."
if(validateC.equals(veryCode)){
out.print(1);
}else{
out.println("Entschuldigung, der Bestätigungscode wurde falsch eingegeben...");
}
out .flush() ;
out.close();
}
}

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn