上面讲到了一个客户请求是如何被控制器转发和处理的,但是,控制器如何知道什么样的信息转发到什么样的Action 类呢?这就需要一些与动作和请求信息相对应的映射配置说明。在struts 中,这些配置映射信息是存储在特定的XML 文件(比如struts-config.xml)。这些配置信息在系统启动的时候被读入内存,供struts framework 在运行期间使用。在内存中,每一个<action>元素都与org.apache.struts.action.ActionMapping 类的一个实例对应。下表就显示了一个登陆的配置映射。
public ActionForward execute(ActionMapping mapping, ActionForm form, javax.servlet.ServletRequest request, javax.servlet.ServletResponse response) throws java.io.IOException,javax.servlet.ServletException <action-mappings> <action path="/logonAction" type="com.test.LogonAction" name="LogonForm" scope="request" input="logoncheck.jsp" validate="false"> <forward name="welcome" path="/welcome.jsp"/> <forward name="failure" path="/logon_failure.jsp "/> </action> </action-mappings>
上面的配置表示:当可以通过/logonAction.do(此处假设配置的控制器映射为*.do)提交请求信息的时候,控制器将信息委托com.test.LogonAction 处理。调用LogonAction实例的execute()方法。同时将Mapping 实例和所对应的LogonForm Bean 信息传入。其中name=LogonForm,使用的form-bean 元素所声明的ActionForm Bean。有关form-bean 的申明如下显示。
<form-beans> <form-bean name="LoginForm" type="com.test.LoginForm"/> </form-beans>