Struts2(五):ActionSupport

我们在上一章节中的一个列子中使用到了一个标识跳转到登录页面的例子:

示例是这样写的:

index.jsp:


login page

这里表示要调转到登录login.jsp页面,不过这个跳转是一个action。

在struts.xml中对应注册:

1

2

3

4 /login.jsp

5

不错,这里就是这么写的。在index.jsp页面中点login page连接确实跳转到了登录页面login.jsp。

为什么在struts.xml中缺省的class是“com.opensymphony.xwork2.ActionSupport”,而缺省的method又是“execute”呢?

这和struts.xml中的package有关系:

/login.jsp

我们看到这里边节点属性中的extends继承了struts-default包,而这个struts-default package是在哪里定义的呢?

在struts2-core-2.3.28.jar包的根目录下,包含了一个struts-default.xml的配置文件,在该文件中声明的有一个package叫struts-default。

我们将struts-default package定义节点拷贝出来分析下:

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

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128 input,back,cancel,browse

129

130

131 input,back,cancel,browse

132

133

134

135

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164 input,back,cancel,browse

165

166

167 input,back,cancel,browse

168

169

170

171

172

173

176

177

178

179

180

182

183

184 input,back,cancel

185

186

187

188 input,back,cancel

189

190

191

192

193

194

195

196

197

这里边都包含了:返回类型,拦截器,拦截器栈,默认的拦截器栈,Action默认的class。

不错这是这里的“”制定了action的默认class,而method的默认方法是ActionSupport中的execute方法。

分析ActionSupport类:

public class com.opensymphony.xwork2.ActionSupport implements com.opensymphony.xwork2.Action, com.opensymphony.xwork2.Validateable, com.opensymphony.xwork2.ValidationAware, com.opensymphony.xwork2.TextProvider, com.opensymphony.xwork2.LocaleProvider, java.io.Serializable {}

ActionSupport定义实现了Action接口、Validateable抽象类、ValidateAware接口、TextProvider接口、LocalProvider接口、Serializeable接口。

1、Action抽象接口中定义了几个返回值常量SUCCESS,INPUT,ERROR,NONE,LOGIN,及一个抽象方法execute接口;

2、Validateable抽象接口类中定义了一个validate抽象方法;

3、ValidateAware抽象接口类中定义

hasActionErrors,hasActionMessages,hasErrors,hasFieldErrors,

addActionError,addActionMessage,addFieldError,

getFieldErrors,getFieldErrors,

setActionMessages,getActionMessages,

setActionErrors,getActionErrors

4、TextProvider,LocalProvider抽象接口类是实现国际化使用的。

从上边ActionSupport定义,得知如果我们要想使用验证,或者国际化等最好是在定义Action时继承ActionSupport类。

Copyright © 2022 破界远征沙盒工坊 All Rights Reserved.