为了减少Java代码中的校验我们先定义Action配置的文件的校验文件(snails-actions-validate.xsd),文件路径请看框架总说明中的图片所示。

snails-actions-validate.xsd

下面的schema文件既是格式校验文件。

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
<!--?xml version="1.0" encoding="UTF-8"?-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<!-- elementFormDefault="qualified" 指出任何 XML 实例文档所使用的且在此 schema
中声明过的元素必须被命名空间限定。
-->

<xs:element name="actions">
<xs:complexType>
<!-- maxOccurs="unbounded"定义元素可以出现一次或者多次 -->
<xs:sequence maxOccurs="unbounded">
<xs:element name="action">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<!-- action的子元素result -->
<xs:element name="result">
<xs:complexType>
<!-- result节点,节点包括字符串形式的内容 -->
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string" use="required" />
<!-- 定义属性redirect只能有2个值, -->
<xs:attribute name="redirect" use="optional" default="false">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="true" />
<xs:enumeration value="false" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>

<!-- action 节点的属性 -->
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="class" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>

</xs:schema>

标签的解释请看注释信息或者看下面的参考网址:

  1. http://www.w3chtml.com/schema/xml-schema-root.html
  2. http://www.cnblogs.com/caoxch/archive/2006/11/17/563856.html
  3. https://www.ibm.com/developerworks/cn/xml/x-cert/part6/

snails-actions.xml

得到校验文件后,开始编写Action配置文件,我们可以先写一个用户登录Action的配置。

1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="UTF-8"?>
<actions xmlns="http://www.w3schools.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com snails-actions-validate.xsd">

<action name="login" class="com.snails.action.LoginAction">
<result name="success">success.jsp</result>
<result name="fail" redirect="true">fail.jsp</result>
</action>
</actions>

注意头部的xsi:schemaLocation="http://www.w3schools.com snails-actions-validate.xsd,这里引入了校验文件,此时两个xml都是在同一个目录下。

到此两个主要的配置文件已经定义完成,下面就是解析xml文件了。

项目完整代码请看MyMVC,欢迎fork学习,如果你觉得对你有帮助给我点个赞吧,当然也欢迎给我提意见(email:1527254027@qq.com,chendequanroob@gmail.com)。