本文为大家分享了java实用验证码的实现代码,供大家参考,具体内容如下
1、ValidCode
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
package validImg;
import java.awt.Color;
import java.io.IOException;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.github.bingoohuang.patchca.color.ColorFactory;
import com.github.bingoohuang.patchca.custom.ConfigurableCaptchaService;
import com.github.bingoohuang.patchca.filter.predefined.CurvesRippleFilterFactory;
import com.github.bingoohuang.patchca.filter.predefined.DiffuseRippleFilterFactory;
import com.github.bingoohuang.patchca.filter.predefined.DoubleRippleFilterFactory;
import com.github.bingoohuang.patchca.filter.predefined.MarbleRippleFilterFactory;
import com.github.bingoohuang.patchca.filter.predefined.WobbleRippleFilterFactory;
import com.github.bingoohuang.patchca.utils.encoder.EncoderHelper;
import com.github.bingoohuang.patchca.word.RandomWordFactory;
public class ValidCode extends HttpServlet {
private static ConfigurableCaptchaService cs = new ConfigurableCaptchaService();
private static Random random = new Random();
static {
// cs.setColorFactory(new SingleColorFactory(new Color(25, 60, 170)));
cs.setColorFactory( new ColorFactory() {
@Override
public Color getColor( int x) {
int [] c = new int [ 3 ];
int i = random.nextInt(c.length);
for ( int fi = 0 ; fi < c.length; fi++) {
if (fi == i) {
c[fi] = random.nextInt( 71 );
} else {
c[fi] = random.nextInt( 256 );
}
}
return new Color(c[ 0 ], c[ 1 ], c[ 2 ]);
}
});
RandomWordFactory wf = new RandomWordFactory();
wf.setCharacters( "23456789abcdefghigkmnpqrstuvwxyzABCDEFGHIGKLMNPQRSTUVWXYZ" );
wf.setMaxLength( 4 );
wf.setMinLength( 4 );
cs.setWordFactory(wf);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
switch (random.nextInt( 5 )) {
case 0 :
cs.setFilterFactory( new CurvesRippleFilterFactory(cs
.getColorFactory()));
break ;
case 1 :
cs.setFilterFactory( new MarbleRippleFilterFactory());
break ;
case 2 :
cs.setFilterFactory( new DoubleRippleFilterFactory());
break ;
case 3 :
cs.setFilterFactory( new WobbleRippleFilterFactory());
break ;
case 4 :
cs.setFilterFactory( new DiffuseRippleFilterFactory());
break ;
}
HttpSession session = request.getSession( false );
if (session == null ) {
session = request.getSession();
}
setResponseHeaders(response);
String token = EncoderHelper.getChallangeAndWriteImage(cs, "png" ,
response.getOutputStream());
session.setAttribute( "validCode" , token);
System.out.println( "当前的SessionID=" + session.getId() + ",验证码= ," + token);
}
protected void setResponseHeaders(HttpServletResponse response) {
response.setContentType( "image/png" );
response.setHeader( "Cache-Control" , "no-cache, no-store" );
response.setHeader( "Pragma" , "no-cache" );
long time = System.currentTimeMillis();
response.setDateHeader( "Last-Modified" , time);
response.setDateHeader( "Date" , time);
response.setDateHeader( "Expires" , time);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
}
|
2.XML代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
< dependency >
< groupId >com.github.bingoohuang</ groupId >
< artifactId >patchca</ artifactId >
< version >0.0.1</ version >
</ dependency >
< servlet >
< servlet-name >ValidCode</ servlet-name >
< servlet-class >validImg.ValidCode</ servlet-class >
</ servlet >
< servlet-mapping >
< servlet-name >ValidCode</ servlet-name >
< url-pattern >/validImg.jpg</ url-pattern >
</ servlet-mapping >
|
以上就是本文的全部内容,希望对大家的学习有所帮助。