复旦大学软件学院oOAD课程期末报告 <servlet-name>action </servlet-name> <url-pattern>*do</url-pattern> </servlet-mapping> 对于复杂的应用,一般需要配置多个 struts- config. Xm文件,可以通过添加另外的 <init- paran>来实现,或者在多个配置文件中以为“,”隔开,如下所示 Eg2.配置多个 struts- config. xm配置文件的 Action servlet的配置 <servlet> <servlet-name>action</servlet-name> <servlet -cla org.apachestrutsaction.ActionServlet </servlet-class> <init-pa <param-name>config</param-name> <param-value>/WEB-INF/struts-config xml</param-val <param-name>config/IVR</param-name> <param-value>/WEB-INF/struts-config-IVR xml</param-value> </init-param> <init-param> <param-name>config/wap</param-name> WEB-INF/struts-config-wap xml </init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <param- name>detail</param-name <param-value>3</param-value> <load-on-startup>0</load-on-startup> </servlet> <servlet-name>action</servlet-name> <url-pattern>*do</url-pattern> </servlet-mapping> 12欢迎和错误处理的配置 首先讲述一下欢迎文件清单< welcome-file-list>的配置,该元素可包含多个 < welcome-file>子元素,当Web容器调用欢迎界面时,将首先查看第一个< welcome-fle>
复旦大学软件学院 OOAD 课程 期末报告 Introduction to Struts2.0 Page | 16 <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> 对于复杂的应用,一般需要配置多个 struts-config.xml 文件,可以通过添加另外的 <init-param>来实现,或者在多个配置文件中以为“,”隔开,如下所示: Eg2. 配置多个 struts-config.xml 配置文件的 ActionServlet 的配置: <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> <init-param> <param-name>config/IVR</param-name> <param-value>/WEB-INF/struts-config-IVR.xml</param-value> </init-param> <init-param> <param-name>config/wap</param-name> <param-value> /WEB-INF/struts-config-wap.xml </param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> 1.2 欢迎和错误处理的配置 首先讲述一下欢迎文件清单<welcome-file-list>的配置,该元素可包含多个 <welcome-file>子元素,当 Web 容器调用欢迎界面时,将首先查看第一个<welcome-file>
复旦大学软件学院oOAD课程期末报告 子元素中定义的文件是否存在,若存在,则将其返回给用户,若不存在,继续判断第二个 < welcome-file>子元素中定义的文件.,配置示例如下: <welcome-file-list> <welcome-file>index. html</welcome-file> <welcome-file>index jsp</welcome-file> <welcome-file>default. jsp</ welcome-file> </welcome-file-list> 接着讲述一下在web.xm中如何配置错误处理,这时需要使用< error-page>元素,该 元素可以根据异常的类型来配置跳转的页面,还可以根据错误码来配置跳转页面,配置示例如下: <!-根据错误码进行跳转-> ≤ error-page> <error-code>500</error-code> <location>/error. jsp</location> </error-page> <!-根据异常进行跳转--> <error-page> <exception-type>java. lang. NullException </exception-type> <location>/error jsp</location> </error-page> 13td文件的配置 若Web工程没有使用 Struts的标签库,可以不在 web. xn中使用 Struts的标签库信 息。当然若开发人员使用了 struts的标签库,也可以直接在jsp页面中引入标签库,例如通过 如下方式引入: <%o@ taglib uri="/WEB-INF/struts-bean. tld"prefix= <%o@ taglib uri="/WEB-INF/struts-html tld"prefix="html"%> <%o@ taglib uri="/WEB-INF/struts-logic tld"prefix="logic"%> <% taglib uri="/WEB-INF/struts-nested. tld prefix ="nested"%/> 在 Struts中进行配置的的好处是因为可以在 Struts中配置为td文件配置一个简要的名 称或者更加易懂的名称,例如在 web. xm文件中增加如下配置: <taglib <taglib-uri>/tags/struts-bean</taglib-uri> <taglib-location>/WEB-INF/struts-bean. tld</taglib-location> <taglib> <taglib-uri>/tags/struts-html</taglib-uri> <taglib-location >/WEB-INF/struts-html tld</taglib-location> <taglib-uri>/tags/struts-logic </taglib-uri> <taglib-location>/ WEB-INF/struts-logic tld</taglib-location> </taglib>
复旦大学软件学院 OOAD 课程 期末报告 Introduction to Struts2.0 Page | 17 子元素中定义的文件是否存在,若存在,则将其返回给用户,若不存在,继续判断第二个 <welcome-file>子元素中定义的文件……,配置示例如下: <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> 接着讲述一下在 web.xml 中如何配置错误处理,这时需要使用<error-page>元素,该 元素可以根据异常的类型来配置跳转的页面,还可以根据错误码来配置跳转页面,配置示例如下: <!-- 根据错误码进行跳转--> <error-page> <error-code>500</error-code> <location>/error.jsp</location> </error-page> <!-- 根据异常进行跳转--> <error-page> <exception-type>java.lang.NullException</exception-type> <location>/error.jsp</location> </error-page> 1.3 tld 文件的配置 若 Web 工程没有使用 Struts 的标签库,可以不在 web.xml 中使用 Struts 的标签库信 息。当然若开发人员使用了 struts 的标签库,也可以直接在 jsp 页面中引入标签库,例如通过 如下方式引入: <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%> <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%> <%@ taglib uri="/WEB-INF/struts-nested.tld" prefix="nested"%> 在 Struts 中进行配置的的好处是因为可以在 Struts 中配置为 tld 文件配置一个简要的名 称或者更加易懂的名称,例如在 web.xml 文件中增加如下配置: <taglib> <taglib-uri>/tags/struts-bean</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-html</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-logic</taglib-uri> <taglib-location>/WEB-INF/struts-logic.tld</taglib-location> </taglib>
复旦大学软件学院oOAD课程期末报告 <taglib> <taglib-uri>/tags/struts-nested</taglib-uri> <taglib-location >/WEB-INF/struts-nested tld</ taglib-location> </taglib> 其中< taglib-uri>元素指定标签库的相对或者绝对URI地址,Web应用将根据这一URI 来访问标签库;< taglib- location>元素指定标签库描述文件在文件资源系统中的物理位置。 此时在jsp页面通过如下方面引入标签库: <%o@ taglib uri="/tags/struts-bean"prefix="bean"%0> <%o@ taglib uri="/tags/struts-html"prefix="html"%0> <%o@ taglib uri="tags/struts-logic"prefix="logic"%> <% taglib uri="/tags/struts-nested"prefix="nested"%0> 14完整配置实例 下面举一个使用 Struts的Web项目的 web. xml的简单配置实例(该实例开发人员也参 考 struts-1.2.8-bin.zip包的 webapps目录下的 struts-mailreader.war),内容如下所示 <?ml version=1."encoding="ISo-8859-1?> <!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc //DTD Web Application 2. 2//EN 0/j2eedtds/web-app_2_2. dtd <web-app> <display-name> Struts Example Application </display-name> <!- Action Servlet Configuration--> <servlet> <servlet-name>action </servlet-name> servlet-class>org. apache struts action Action Servlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config xml /WEB-INF/struts-config-registration. xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <l-- Action Servlet Mapping--> servlet-name>action </servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-欢迎列表-→> <welcome-file-list> <welcome-file>index jsp</ welcome-file> </welcome-file-list> <!-错误处理-->
复旦大学软件学院 OOAD 课程 期末报告 Introduction to Struts2.0 Page | 18 <taglib> <taglib-uri>/tags/struts-nested</taglib-uri> <taglib-location>/WEB-INF/struts-nested.tld</taglib-location> </taglib> 其中<taglib-uri>元素指定标签库的相对或者绝对 URI 地址,Web 应用将根据这一 URI 来访问标签库;<taglib-location>元素指定标签库描述文件在文件资源系统中的物理位置。 此时在 jsp 页面通过如下方面引入标签库: <%@ taglib uri="/tags/struts-bean " prefix="bean"%> <%@ taglib uri="/tags/struts-html" prefix="html"%> <%@ taglib uri="/tags/struts-logic " prefix="logic"%> <%@ taglib uri="/tags/struts-nested " prefix="nested"%> 1.4 完整配置实例 下面举一个使用 Struts 的 Web 项目的 web.xml 的简单配置实例(该实例开发人员也参 考 struts-1.2.8-bin.zip 包的 webapps 目录下的 struts-mailreader.war),内容如下所示: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <display-name>Struts Example Application</display-name> <!-- Action Servlet Configuration --> <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, /WEB-INF/struts-config-registration.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- Action Servlet Mapping --> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- 欢迎列表--> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 错误处理 -->
复旦大学软件学院oOAD课程期末报告 <exception-type>java. lang Exception </ exception-type> <location>/error jsp</location> </error-page> <taglib-location>/WEB-INF/struts-bean. tld </taglib-location> </taglib <taglib-uri>/ tags/struts-html</taglib-uri> <taglib-location>/WEB-INF/struts-html tld</ taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-logic </taglib-uri> <taglib-location>/WEB-INF/struts-logic tld </taglib-location> /taglib> <taglib> <taglib-uri>/tags/struts-nested</taglib-uri> <taglib-location>/WEB-INF/struts-nested tld</taglib-location> </taglib> 2.2.2 Struts. xml 配置包含 result/vew类型、 action映射、拦截器等的 Struts2的主要配置文件。 这里给出下面的例子,以注释来对每个tag进行解释 <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configura tion2.o//eN"http://struts.apacheorg/dtds/struts-2.0.dtd> <struts> <!- include节点是 struts2中组件化的方式可以将每个功能模块独立到一个xm配置文 件中然后用 include节点引用-> <include file=struts-default xml"></include> <!-- package提供了将多个 Action组织为一个模块的方式 package的名字必须是唯一的 package可以扩展当一个 package扩展自 另一个 package时该 package会在本身配置的基础上加入扩展的 package 的配置父 package必须在子 package前配置 name: package名称 extends:继承的父 package名称 abstract:设置 package的属性为抽象的抽象的 package不能定义 action值 true: false Page|19
复旦大学软件学院 OOAD 课程 期末报告 Introduction to Struts2.0 Page | 19 <error-page> <exception-type>java.lang.Exception</exception-type> <location>/error.jsp</location> </error-page> <taglib> <taglib-uri>/tags/struts-bean</taglib-uri> <taglib-location>/WEB-INF/struts-bean.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-html</taglib-uri> <taglib-location>/WEB-INF/struts-html.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-logic</taglib-uri> <taglib-location>/WEB-INF/struts-logic.tld</taglib-location> </taglib> <taglib> <taglib-uri>/tags/struts-nested</taglib-uri> <taglib-location>/WEB-INF/struts-nested.tld</taglib-location> </taglib> </web-app> 2.2.2 Struts.xml 配置包含 result/view 类型、action 映射、拦截器等的 Struts2 的主要配置文件。 这里给出下面的例子,以注释来对每个 tag 进行解释。 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configura tion 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" > <struts> <!-- include 节点是 struts2 中组件化的方式 可以将每个功能模块独立到一个 xml 配置文 件中 然后用 include 节点引用 --> <include file="struts-default.xml"></include> <!-- package 提供了将多个 Action 组织为一个模块的方式 package 的名字必须是唯一的 package 可以扩展 当一个 package 扩展自 另一个 package 时该 package 会在本身配置的基础上加入扩展的 package 的配置 父 package 必须在子 package 前配置 name:package 名称 extends:继承的父 package 名称 abstract:设置 package 的属性为抽象的 抽象的 package 不能定义 action 值 true:false
复旦大学软件学院oOAD课程期末报告 names pace:定义 package命名空间该命名空间影响到url的地址,例如此命名空间为 /test那么访问是的地址为http://localhost:8080/struts2/test/xx.action <package name="com. kay struts 2 extends="struts-default"namespace="/tes <interceptors> <!-定义拦截器 name:拦截器名称 lass:拦截器类路径 <interceptor name="timer"class="com. kay timer" ></interceptor> <interceptor name="logger"class="com. kay logger"></interceptor> <!-定义拦截器栈-> <interceptor-stack name="mystack"> <interceptor-ref name="timer"></interceptor-ref> <interceptor-ref name="logger" ></interceptor-ref> </intercepto </inte <!-定义默认的拦截器每个 Action都会自动引用 如果 Action中引用了其它的拦截器默认的拦截器将无效--> <default-interceptor- ref name="mystack"></default-interceptor-ref> <!-全局 results配置--> <global-results> <result name="input">/error jsp</result> </global-results> <!-- Action配置一个 Action可以被多次映射(只要 action配置中的name不同) name: action名称 cass:对应的类的路径 method:调用 Action中的方法名 <action name="hello"class="com. kay struts2 Action. LoginAction"> <!-引用拦截器 name:拦截器名称或拦截器栈名称 <interceptor-ref name="timer" ></interceptor-ref <!-节点配置 name: result名称和 Action中返回的值相同 type: result类型不写则选用 superpackage的 type struts-defaultxn中的 默认为 dispatcher
复旦大学软件学院 OOAD 课程 期末报告 Introduction to Struts2.0 Page | 20 namespace:定义 package 命名空间 该命名空间影响到 url 的地址,例如此命名空间为 /test 那么访问是的地址为 http://localhost:8080/struts2/test/XX.action --> <package name="com.kay.struts2" extends="struts-default" namespace="/tes t"> <interceptors> <!-- 定义拦截器 name:拦截器名称 class:拦截器类路径 --> <interceptor name="timer" class="com.kay.timer"></interceptor> <interceptor name="logger" class="com.kay.logger"></interceptor> <!-- 定义拦截器栈 --> <interceptor-stack name="mystack"> <interceptor-ref name="timer"></interceptor-ref> <interceptor-ref name="logger"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 定义默认的拦截器 每个 Action 都会自动引用 如果 Action 中引用了其它的拦截器 默认的拦截器将无效 --> <default-interceptor-ref name="mystack"></default-interceptor-ref> <!-- 全局 results 配置 --> <global-results> <result name="input">/error.jsp</result> </global-results> <!-- Action 配置 一个 Action 可以被多次映射(只要 action 配置中的 name 不同) name:action 名称 class: 对应的类的路径 method: 调用 Action 中的方法名 --> <action name="hello" class="com.kay.struts2.Action.LoginAction"> <!-- 引用拦截器 name:拦截器名称或拦截器栈名称 --> <interceptor-ref name="timer"></interceptor-ref> <!-- 节点配置 name : result 名称 和 Action 中返回的值相同 type : result类型 不写则选用 superpackage的type struts-default.xml中的 默认为 dispatcher