Struts1.x主要基于两个配置文件,Web.xml和struts-config.xml。其中 Web.xml是所有web应用都具有的而struts-config.xml确是Struts独有的。
DTD把文档化为如下组件:元素、属性、实体。(每一种xml文档都有独自的DTD文件) 对于Web.xml而言它的顶层元素为:<web-app>:
<!ELEMENT web-app( icon?,display-name?,description?,distributable?,contex-param*,filter*, filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mine-mapping*,welcome-file-list?,error-page*,taglib*,resouorce-enc-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref* ) >
DTD中特殊符号的作用:
子元素的顺序由他们出现在父元素中的顺序所决定的。
<servlet>元素的DTD定义如下:
<!ELEMENT servlet (icon?, servlet-name, display-name?, description?, (servlet-class|jsp-file), init-param*, load-on-startup?, run-as?, security-role-ref*)>
<servlet-name>定义servlet名称,<serclet-class>指定Servlet完整类名,例如:
<servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.action.ActionServlet</servlet-class> </servlet>
用来指定可以处理哪些URL:
<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
<servlet>中的<servlet-name>中的名字要和<servlet-mapping>中的<servlet-name>中的<servlet-name>匹配
“*.do”表示ActionServle处理所有以".do"结尾的URL。如果这么声明<url-pattern>/do/*</url-pattern>表示处理所有以/do开头的url。
**********不管应用中有多少个字应用都只要配置一个ActionServlet。
<servlet>的子元素<init-param>用于配置stervlet的初始化参数。如:
<init-param> <param-name>config</param-name><!--参数名 --> <param-value>/WEB-INF/struts-config.xml</param-value><!--文件名 --> </init-param>
以上代码为ActionServlet配置了初始化参数,config是Struts的ActionServlet特有的,用来配置Struts的配置文件的相对路径。
<welcome-file-list> <welcome-file>hello.jsp</welcome-file> </welcome-file-list>
可以包含多个<welcom-file>,应用加载时会检索欢迎清单,如果存在则返回第一个页面,不存在则插在下一个,都不存在的话就向客户返回“HTTP404 Not Found"的出错信息。
<error-page> <error-code>404</error-code> <location>/error/404.jsp</location> </error-page>
如果出现404错误就会向用户返回404.jsp文件,也还可以为Web容器捕获java异常配置<error-page>元素但是此时需要配置<exceprion-type>,用于指定java异常类。
可能捕获到的异常如下:
如:
<error-page> <exception-type>javax.servlet.ServletExceprion</exception-type> <location>/error/system_error.jsp</location> </error-page>
当容器捕获到相应的异常的时候就会向用户返回相应的页面。
<taglib> <taglib-url>/WEB-INF/struts-html.tld</taglib-url> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib>
<taglib-url>指定标签库的相对位置或者绝得位置,<taglib-location>指定标签库在文件资源系统中的物理位置。注意:Struts1.3之后就不需要配置标签库都内置了,只需要引用就可以了。