Struts1.x主要基于两个配置文件,Web.xml和struts-config.xml。其中 Web.xml是所有web应用都具有的而struts-config.xml确是Struts独有的。
1.Web应用发布文档类型定义
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中特殊符号的作用:
1、无符号:该子元素必须在父元素中出现而且只能出现一次。
2、+:必须存在,一次或者多次。
3、*:可以不存在,存在一次或者多次。
4、?:可以不存在,存在只能存在一次。
子元素的顺序由他们出现在父元素中的顺序所决定的。
2、例:为Struts应用配置ActionServlet
第一步:配置ActionServlet:用<servlet>元素声明ActionServlet
<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>
第二步:为ActionServlet配置<servlet-mapping>
用来指定可以处理哪些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。
第三步: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异常类。
可能捕获到的异常如下:
- RuntimeException or Error
- ServletException or 子类
- IOException or 子类
如:
<error-page>
<exception-type>javax.servlet.ServletExceprion</exception-type>
<location>/error/system_error.jsp</location>
</error-page>
当容器捕获到相应的异常的时候就会向用户返回相应的页面。
第六步:配置Struts标签库。
<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之后就不需要配置标签库都内置了,只需要引用就可以了。