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
|
package
oshop.captcha;
import
java.awt.Color;
import
java.io.IOException;
import
java.io.OutputStream;
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;
//Q277160299
import
org.patchca.color.ColorFactory;
import
org.patchca.color.SingleColorFactory;
import
org.patchca.filter.predefined.CurvesRippleFilterFactory;
import
org.patchca.filter.predefined.DiffuseRippleFilterFactory;
import
org.patchca.filter.predefined.DoubleRippleFilterFactory;
import
org.patchca.filter.predefined.MarbleRippleFilterFactory;
import
org.patchca.filter.predefined.WobbleRippleFilterFactory;
import
org.patchca.service.ConfigurableCaptchaService;
import
org.patchca.utils.encoder.EncoderHelper;
import
org.patchca.word.RandomWordFactory;
public
class
CaptchaServlet
extends
HttpServlet {
private
static
final
long
serialVersionUID = 3796351198097771007L;
private
static
ConfigurableCaptchaService cs =
null
;
private
static
ColorFactory cf =
null
;
private
static
RandomWordFactory wf =
null
;
private
static
Random r =
new
Random();
private
static
CurvesRippleFilterFactory crff =
null
;
private
static
MarbleRippleFilterFactory mrff =
null
;
private
static
DoubleRippleFilterFactory drff =
null
;
private
static
WobbleRippleFilterFactory wrff =
null
;
private
static
DiffuseRippleFilterFactory dirff =
null
;
@Override
public
void
init()
throws
ServletException {
super
.init();
cs =
new
ConfigurableCaptchaService();
cf =
new
SingleColorFactory(
new
Color(
25
,
60
,
170
));
wf =
new
RandomWordFactory();
crff =
new
CurvesRippleFilterFactory(cs.getColorFactory());
drff =
new
DoubleRippleFilterFactory();
wrff =
new
WobbleRippleFilterFactory();
dirff =
new
DiffuseRippleFilterFactory();
mrff =
new
MarbleRippleFilterFactory();
cs.setWordFactory(wf);
cs.setColorFactory(cf);
cs.setWidth(
120
);
cs.setHeight(
50
);
}
@Override
public
void
destroy() {
wf =
null
;
cf =
null
;
cs =
null
;
super
.destroy();
}
public
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException {
response.setContentType(
"image/png"
);
response.setHeader(
"cache"
,
"no-cache"
);
wf.setMaxLength(
5
);
wf.setMinLength(
3
);
HttpSession session = request.getSession(
true
);
OutputStream os = response.getOutputStream();
switch
(r.nextInt(
5
)) {
case
0
:
cs.setFilterFactory(crff);
break
;
case
1
:
cs.setFilterFactory(mrff);
break
;
case
2
:
cs.setFilterFactory(drff);
break
;
case
3
:
cs.setFilterFactory(wrff);
break
;
case
4
:
cs.setFilterFactory(dirff);
break
;
}
String captcha = EncoderHelper.getChallangeAndWriteImage(cs,
"png"
, os);
session.setAttribute(
"captcha"
, captcha);
os.flush();
os.close();
}
}
|