配置Struts应用(1)
Struts应用采用两个基于XML的配置文件来配置应用,这两个配置文件是web.xml和struts-config.xml。web.xml适用于所有的Java Web应用。Struts-config.xml文件是struts应用专有的配置文件。 DTD文档类型定义(Document Type Definition)对XML文档的格式做了定义。<web-app>是WEB应用发布文件的顶层元素。 <!ELEMENT web-app(icon?,display-name?,description?,distributable?, context-param*,filter*,filter-mapping*, listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*, welcome-file-list?,error-page*,taglib*, resource-env-ref*,resource-ref*,security-constraint*,login-config?, security-role*,env-entry*,ejb-ref*,ejb-local-ref*) > *注意:<servlet>子元素必须出现在<servlet-mapping>前面,而<servlet-mapping>必须出现在<taglib>元素的前面。 符号 | 含义 | 无符号 | 该子元素在父元素内必须存在且只能存在一次 | + | 该子元素在父元素内必须存在,可以存在一次或多次 | * | 该子元素在父元素内可以不存在,或者存在一次或多次 | ? | 该子元素在父元素内可以不存在,或者只存在一次 |
1) 为struts应用配置web.xml文件 a) 配置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的名称,<servlet-class>用来指定servlet的完整类名。以下是声明ActionServlet的代码: <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> </servlet> ·<servlet-mapping>用来指定ActionServlet可以处理哪些URL。 <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> </servlet>
<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> 以上代码的<url-pattern>属性为”*.do”,表明ActionServlet负责处理所有以”.do”扩展名结尾的URL。如果属性为”/do/*”,表明ActionServlet负责处理所有以”/do”为前缀的URL,其中第二个/为转义符。 b) 声明ActionServlet的初始化元素 <servlet>的<init-param>元素用于配置Servlet的初始化参数。 <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param>
<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
</servlet> config参数是配置struts的ActionServlet专有的,它用来设置struts配置文件的相对路径。 c) 配置欢迎文件清单 当客户访问Web应用时,如果仅仅给出Web应用的Root URL,,没有指定具体的文件名,Web容器会自动调用Web应用的欢迎文件。<welcome-file-list>元素用来设置欢迎文件清单。<welcome-file-list>中可以有多个<welcome-file>元素。 <welcome-file-list> <welcome-file>welcome.jsp</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> 以上定义了两个欢迎文件,Web容器调用Web应用欢迎文件时,首先寻找第一个文件,如果文件存在,则显示第一个文件给客户,如果不存在,则继续寻找下一个文件,如果<welcome-file-list>中的任何文件都不存在,则返回错误。 在<welcome-file-list>中不能配置Servlet映射,因此不能直接把Struts的Action作为欢迎文件。但是可以通过如下方法调用Struts Action。首先,在Struts配置文件中为被调用的Action创建一个全局的(global)转发项: <global-forward> <forward name=”welcome” path=”HelloWorld.do”/> </global-forward> 然后创建一个名叫welcome.jsp的文件,该页面被加载时。它把请求转发给上面<forward>元素指定的Action: <%@taglib uri=”/WEB-INF/struts-logic.tld” prefix=”logic” %> <html> <body> <logic:forward name=”welcome”> </body> </html> 最后在web.xml文件中把welcome.jsp文件配置为欢迎文件, <welcome-file-list> <welcome-file>welcome.jsp</welcome-file> </welcome-file-list>
|