?1
package?cn.com.jsp;
?2
?3
import?java.io.IOException;
?4
import?javax.servlet.Filter;
?5
import?javax.servlet.FilterChain;
?6
import?javax.servlet.FilterConfig;
?7
import?javax.servlet.ServletException;
?8
import?javax.servlet.ServletRequest;
?9
import?javax.servlet.ServletResponse;
10
import?javax.servlet.UnavailableException;
11
12
public
?
class
?SetCharacterEncodingFilter?implements?Filter?
{
13
????
protected
?String?encoding?
=
?
null
;
14
????
protected
?FilterConfig?filterConfig?
=
?
null
;
15
????
protected
?boolean?ignore?
=
?
true
;
16
17
????
public
?
void
?destroy()?
{
18
????????
this
.encoding?
=
?
null
;
19
????????
this
.filterConfig?
=
?
null
;
20
????}
21
22
????
public
?
void
?doFilter(ServletRequest?request,?ServletResponse?response,
23
?????????????????????????FilterChain?chain)?throws?IOException,
24
????????????ServletException?
{
25
26
????????
//
?Conditionally?select?and?set?the?character?encoding?to?be?used
27
????????
if
?(ignore?
||
?(request.getCharacterEncoding()?
==
?
null
))?
{
28
????????????String?encoding?
=
?selectEncoding(request);
29
????????????
if
?(encoding?
!=
?
null
)?
{
30
????????????????request.setCharacterEncoding(encoding);
31
????????????}
32
????????}
33
34
????????
//
?Pass?control?on?to?the?next?filter
35
????????chain.doFilter(request,?response);
36
37
????}
38
39
????
public
?
void
?init(FilterConfig?filterConfig)?throws?ServletException?
{
40
41
????????
this
.filterConfig?
=
?filterConfig;
42
????????
this
.encoding?
=
?filterConfig.getInitParameter(
"
encoding
"
);
43
????????String?value?
=
?filterConfig.getInitParameter(
"
ignore
"
);
44
????????
if
?(value?
==
?
null
)?
{
45
????????????
this
.ignore?
=
?
true
;
46
????????}
?
else
?
if
?(value.equalsIgnoreCase(
"
true
"
))?
{
47
????????????
this
.ignore?
=
?
true
;
48
????????}
?
else
?
if
?(value.equalsIgnoreCase(
"
yes
"
))?
{
49
????????????
this
.ignore?
=
?
true
;
50
????????}
?
else
?
{
51
????????????
this
.ignore?
=
?
false
;
52
????????}
53
54
????}
55
56
????
protected
?String?selectEncoding(ServletRequest?request)?
{
57
????????
return
?(
this
.encoding);
58
????}
59
60
}

?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

相應的web.xml文件里的配置如下:
?1
<web-app>
?2
??<display-name>wwwrootSPAN style="COLOR: #800000">display-name>
?3
??<description>MySQL?Test?AppSPAN style="COLOR: #800000">description>
?4
??<filter>
?5
????<filter-name>setCharacterEncodingFilterSPAN style="COLOR: #800000">filter-name>
?6
????<display-name>setCharacterEncodingFilterSPAN style="COLOR: #800000">display-name>
?7
????<description>setCharacterEncodingFilterSPAN style="COLOR: #800000">description>
?8
????<filter-class>cn.com.jsp.SetCharacterEncodingFilterSPAN style="COLOR: #800000">filter-class>
?9
????<init-param>
10
??????<param-name>encodingSPAN style="COLOR: #800000">param-name>
11
??????<param-value>GBKSPAN style="COLOR: #800000">param-value>
12
????SPAN style="COLOR: #800000">init-param>
13
??SPAN style="COLOR: #800000">filter>
14
??<filter-mapping>
15
????<filter-name>setCharacterEncodingFilterSPAN style="COLOR: #800000">filter-name>
16
????<url-pattern>/*SPAN style="COLOR: #800000">url-pattern>
17
??SPAN style="COLOR: #800000">filter-mapping>
18
……
19
SPAN style="COLOR: #800000">web-app>

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12

13

14

15

16

17

18

19

上面的代碼我也沒更改什么,看了后,了解了其中的些許流程。放入blog,留以備學吧