1、webwork.properties文件中,添加:webwork.i18n.encoding = GBK它主要是用來設(shè)置WebWork UI標(biāo)簽庫(kù)的編碼,如果不設(shè)置它將通過System.getProperty("file.encoding")來獲取默認(rèn)字符編碼。
2、velocity.properties文件中,添加:input.encoding=GBKoutput.encoding=GBKdefault.contentType=text/html; charset=GBK它是用來設(shè)置.vm頁(yè)面的編碼方式
3、寫一個(gè)Filter,將編碼設(shè)置為GBK。詳細(xì)請(qǐng)看附件中的SetCharacterEncodingFilter文件和Web.xml的配置。它解決Action數(shù)據(jù)傳遞時(shí)的編碼。
4、本文下面的源代碼修改自\webwork\docs\wikidocs\TutorialLesson03.html并解決中文問題
SetCharacterEncodingFilter.java
1
package EncodingFilter;
2
3
import java.io.IOException;
4
5
import javax.servlet.Filter;
6
7
import javax.servlet.FilterChain;
8
9
import javax.servlet.FilterConfig;
10
11
import javax.servlet.ServletException;
12
13
import javax.servlet.ServletRequest;
14
15
import javax.servlet.ServletResponse;
16
17
public class SetCharacterEncodingFilter implements Filter
{
18
19
protected String encoding = null;
20
21
protected FilterConfig filterConfig = null;
22
23
protected boolean ignore = true;
24
25
public void destroy()
{
26
27
this.encoding = null;
28
29
this.filterConfig = null;
30
31
}
32
33
/**//**
34
35
* Select and set (if specified) the character encoding to be used to
36
37
* interpret request parameters for this request.
38
39
*
40
41
* @param request The servlet request we are processing
42
43
* @param result The servlet response we are creating
44
45
* @param chain The filter chain we are processing
46
47
*
48
49
* @exception IOException if an input/output error occurs
50
51
* @exception ServletException if a servlet error occurs
52
53
*/
54
55
public void doFilter(ServletRequest request, ServletResponse response,
56
57
FilterChain chain)
58
59
throws IOException, ServletException
{
60
61
if (ignore || (request.getCharacterEncoding() == null))
{
62
63
String encoding = selectEncoding(request);
64
65
if (encoding != null)
66
67
request.setCharacterEncoding(encoding);
68
69
}
70
71
chain.doFilter(request, response);
72
73
}
74
75
76
77
/**//**
78
79
* Place this filter into service.
80
81
*
82
83
* @param filterConfig The filter configuration object
84
85
*/
86
87
public void init(FilterConfig filterConfig) throws ServletException
{
88
89
this.filterConfig = filterConfig;
90
91
this.encoding = filterConfig.getInitParameter("encoding");
92
93
String value = filterConfig.getInitParameter("ignore");
94
95
if (value == null)
96
97
this.ignore = true;
98
99
else if (value.equalsIgnoreCase("true"))
100
101
this.ignore = true;
102
103
else if (value.equalsIgnoreCase("yes"))
104
105
this.ignore = true;
106
107
else
108
109
this.ignore = false;
110
111
}
112
113
protected String selectEncoding(ServletRequest request)
{
114
115
return (this.encoding);
116
117
}
118
119
120
121
}
122
123

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

100

101

102

103

104

105

106

107

108

109

110

111

112

113



114

115

116

117

118

119

120

121

122

123

web.xml
1
<filter>
2
3
<filter-name>Encoding</filter-name>
4
5
<filter-class>EncodingFilter.SetCharacterEncodingFilter</filter-class>
6
7
<init-param>
8
9
<param-name>encoding</param-name>
10
11
<param-value>GBK</param-value>
12
13
</init-param>
14
15
</filter>
16
17
<filter-mapping>
18
19
<filter-name>Encoding</filter-name>
20
21
<url-pattern>/*</url-pattern>
22
23
</filter-mapping>
24
25

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

1
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"
2
"http://www.opensymphony.com/xwork/xwork-1.0.dtd">
3
4
<xwork>
5
<!-- Include webwork defaults (from WebWork JAR). -->
6
<include file="webwork-default.xml" />
7
8
<!-- Configuration for the default package. -->
9
<package name="default" extends="webwork-default">
10
<!-- Default interceptor stack. -->
11
<default-interceptor-ref name="defaultStack" />
12
13
<!-- Action: Lesson 03: HelloAction. -->
14
<action name="hello" class="lesson03.HelloAction">
15
<result name="error" type="dispatcher">ex02-index.jsp</result>
16
<result name="success" type="dispatcher">ex02-success.jsp</result>
17
</action>
18
</package>
19
</xwork>
20
21

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

1
package lesson03;
2
3
import com.opensymphony.xwork.ActionSupport;
4
5
public class HelloAction extends ActionSupport
{
6
7
String person;
8
9
public String getPerson()
{
10
11
return person;
12
13
}
14
15
public void setPerson(String person)
{
16
17
this.person = person;
18
19
}
20
21
public String execute() throws Exception
{
22
23
if ((person == null) || (person.length() == 0)) return ERROR;
24
25
else return SUCCESS;
26
27
}
28
29
}
30
31

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

1
<html>
2
<head>
3
<title>test webwork</title>
4
</head>
5
<body>
6
<form action="hello.action" method="post">
7
<input type="text" name="person" value=""/>
8
<input type="submit" value="Submit"/>
9
</form>
10
</body>
11
</html>
12
13

2

3

4

5

6

7

8

9

10

11

12

13

1
<html>
2
<head>
3
<title>WebWork Tutorial - Lesson 3 - Example 2</title>
4
</head>
5
6
<body>
7
8
<p>What's your name?</p>
9
10
<form action="hello.action" method="post">
11
<p><input type="text" name="person" /><input type="submit" /></p>
12
</form>
13
14
</body>
15
</html>
16

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

ex02-success.jsp:
1
<%
@ taglib uri="webwork" prefix="ww" %>
2
<html>
3
<head>
4
<title>WebWork Tutorial - Lesson 3 - Example 2</title>
5
</head>
6
<body>
7
8
Hello, <ww:property value="person" />
9
10
</body>
11
</html>
12
13



2

3

4

5

6

7

8

9

10

11

12

13
