<html页面>. . .
<τρ>
<Τδτάξη="td_left">
<ετικέταγια="Ελεγχος">CAPTCHA</ετικέτα>
</Τδ>
<Τδτάξη="td_right έλεγχος">
<Εισαγωγήτύπος="κείμενο"ταυτότητα="Ελεγχος"όνομα="Ελεγχος"τάξη="Ελεγχος">
<ΙΜΓsrc="checkCodeServlet"ύψος="32 εικονοστοιχεία"alt=""στο κλικ="changeCheckCode(Αυτό)">
<Σενάριοτύπος="κείμενο/javascript">
//Συμβάντα κλικ σε εικόνα
ΛειτουργίαchangeCheckCode(ΙΜΓ) {
img.Πηγή / Πηγή="checkCodeServlet;"+ΝέοΗμερομηνία().getTime();
}
</Σενάριο>
</Τδ>
</τρ>//验证码拼接部分δημόσια τάξηCheckCodeServletεπεκτείνειHttpServlet{
@Override
δημόσιο κενόdoGet(Αίτημα HttpServletRequest, απόκριση HttpServletResponse)ρίψειςServletException, IOException{
//Ο διακομιστής ενημερώνει το πρόγραμμα περιήγησης να μην αποθηκεύει προσωρινά
απάντηση.setHeader("Πράξη","χωρίς κρυφή μνήμη"); απάντηση.setHeader("έλεγχος κρυφής μνήμης","χωρίς κρυφή μνήμη"); απάντηση.setHeader("λήγει","0");
//Δημιουργήστε ένα μεγάλο στη μνήμη80, ευρύ30Το προεπιλεγμένο μαύρο φόντο
//Παράμετρος 1: Μήκος
//Παράμετρος 2: Πλάτος
//Παράμετρος 3: Χρώμα
Διεθνέςπλάτος =80;
Διεθνέςύψος =30; Εικόνα BufferedImage =ΝέοΑποθηκευμένη εικόνα(width,height,BufferedImage.TYPE_INT_RGB);
//Πάρτε το πινέλο
Γραφικά g = image.getGraphics();
//Ορίστε το χρώμα του πινέλου σε γκρι
g.setColor(Χρώμα.ΓΚΡΙ);
//Γεμίστε την εικόνα
g.fillRect(0,0, πλάτος, ύψος);
//Παράγεται4τυχαίος κωδικός επαλήθευσης,12Ευ
String checkCode = getCheckCode();
//Βάλτε τον κωδικόΣυνεδρία HttpΜέτριος
request.getΣυνεδρία().setΧαρακτηριστικό("κώδικας",checkCode);
//Ορίστε το χρώμα του πινέλου σε κίτρινο
g.setColor(Χρώμα.ΚΊΤΡΙΝΟ);
//Ορίστε το μέγεθος της γραμματοσειράς
g.setΓραμματοσειρά(ΝέοΓραμματοσειρά("Μαύρο σώμα",Γραμματοσειρά.ΕΝΤΟΝΟΣ,24));
//Γράψτε έναν κωδικό επαλήθευσης στην εικόνα
g.drawString(κωδικός ελέγχου,15,25);
//Έξοδος της εικόνας από τη μνήμη στο πρόγραμμα περιήγησης
//Παράμετρος 1: Αντικείμενο εικόνας
//Παράμετρος 2: Η μορφή της εικόνας, όπως:PNG,JPG,GIF
//Παράμετρος 3: Πού εξάγεται η εικόνα
ΕικόναIO.Εγγραφή(εικόνα,"PNG",response.getOutputStream());
}
/**
*Παράγεται4Bit τυχαία συμβολοσειρά
*/
ΙδιωτικόΣυμβολοσειρά getCheckCode() {
Βάση συμβολοσειράς ="0123456789ABCDEFGabcdefg";
Διεθνέςμέγεθος = βάση.μήκος(); Τυχαίο r =ΝέοΤυχαίος(); StringBuffer sb =ΝέοStringBuffer();
Για(Διεθνέςi=1; i<=4; Ι++){
//Παράγεται0προς τηνΜέγεθος-1τυχαίων τιμών
Διεθνέςδείκτης = r.nextInt(μέγεθος);
//σεΒάσησυμβολοσειρά λάβετε δείκτη ωςευρετήριοΧαρακτήρες
κάρβουνοc = βάση.charAt(ευρετήριο);
//βούλησηcΒάλτε μέσαStringBufferΠηγαίνετε στη μέση
sb.προσάρτηση(c);
}
Επιστροφήsb.toΣυμβολοσειρά();
}
@Override
δημόσιο κενόdoPost(Αίτημα HttpServletRequest, απόκριση HttpServletResponse) ρίψειςServletException, IOException{
Αυτό.doGet(αίτημα,απάντηση);
}
}
Πώς να το πετύχετε;
|