`
hain
  • 浏览: 448979 次
  • 来自: ...
社区版块
存档分类
最新评论

ActionMapping

阅读更多
在Struts 1.1之後,很多的请求分配职责都落入了RequestProcessor的手上,ActionServlet则专责於组态配置及应用程式模组的设定。

RequestProcessor采取 Command 模式,根据客户端的请求呼叫Action物件,其分配的依据是客户端请求的URI及Action物件的对应,这些都设定在struts- config.xml的<action-mappings>标签中。

<action-mappings>用来描述一组ActionMapping物件,当中的每一个<action> 标签都对应一个ActionMapping物件,当客户端发出请求至RequestProcessor时,请求的URI对应於< action>标签中设定的path属性,而要呼叫的Action物件则是type属性所设定的物件,RequestProcessor会将请求的 执行工作交给该Action物件来执行。

举个例子来说,如果<action-mappings>设定如下的话:

...
<action-mappings>
    <action
        path="/hello"
        type="onlyfun.caterpillar.HelloAction">
        ....
    </action>

    <action
        path="/login"
        type="onlyfun.caterpillar.LoginAction">
        ....
    </action>
</action-mappings>
...


则当请求的URL是http://localhost:8080/strutsapp/hello.do时, RequestProcessor会使用/hello.do来确认对应的ActionMapping物件(实际上即找出path设定为/hello的 <action>標籤),该ActionMapping物件告知RequestProcessor要使用 onlyfun.caterpillar.HelloAction,而後RequestProcessor会将呼叫HelloAction的 execute()方法,并将ActionMapping物件当作参数传递给它。

RequestProcessor实际上将工作交给Action物件,Action物件在第一次被呼叫时产生,之後一直使用它。 Action物件的运作必须提供一些参数来描述工作的细节,诸如使用哪一个ActionForm、forward对象的查找、错误发生时的页面对象等等, Struts将这些资讯包装在ActionMapping中,并作为参数传送给Action物件,以使得Action在需要相关的资讯时可以从 ActionMapping中取得。

如果客户端请求了struts-config.xml中没有定义的资源,Struts会丢出 404 Invalid path 的讯息,您可以撰写匿名的ActionMapping来提供自己的错误讯息:

...
<action>
    name="error"
    unknown="true"
    forward="/WEB-INF/pages/error.jsp"/>
...


如果RequestProcessor遇到没有定义的Action请求,则会交由匿名的ActionMapping来处理。

在<action>标签中会使用<forward>标签,用於查找与指定Action物件完成之後,要转发请求回应的去向,您使 用ActionMapping的findForward()方法来查找对应的forward对象,另外,您也可以提供一个< global-forward>设定,如果ActionMapping的findForward()方法找不到指定的forward对象,则会查找 <global-forward>所设定的对象,一个设定例子如下:

struts-config.xml
...  <struts-config>     <global-forwards>         <forward             name="welcome"             path="/welcome.do"/>     </global-forwards>    <action-mappings>        <action             path="/welcome              type="onlyfun.caterpillar.WelcomeAction">              <forward                 name="welcomeUser"                  path="/WEB-INF/pages/welcome.jsp"/>          </action>        <action             path="/hello"              type="onlyfun.caterpillar.HelloAction">              <forward                 name="helloUser"                  path="/WEB-INF/pages/hello.jsp"/>          </action>     <action-mappings> </struts-config> ...

<global-forward>提供一个全局可查找的forward对象,在Struts的组态中,可以为每一个 <action>标签指定forward对象,如果在<action>中查找不到,就会至<global- forward>中查找。对於一些共同使用的forward对象,您可以集中於<global-forward>中管理。

在Struts中,ActionMapping继承自ActionConfig,大部份的属性定义实际上都已经在ActionConfig 中完成,在将来ActionMapping有可能会被AutoConfig所取代,不过在目前ActionMapping仍旧存在,根据线上API的说 明,存在的事实基於它仍是现存应用程式所使用到的类别。
分享到:
评论

相关推荐

    ActionForward and ActionMapping

    ActionForward and ActionMapping

    Struts1教程之ActionMapping_动力节点Java学院整理

    主要介绍了Struts1教程之ActionMapping,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Struts in Action中文版

    1. 介绍.........................................................................................................18 1.1. 关于本书..........................................................................

    外文翻译 stus MVC

    The ActionMapping contains the knowledge of how a specific event maps to specific Actions. The ActionServlet (Command) passes the ActionMapping to the Action class via the perform() method. This ...

    ssh(structs,spring,hibernate)框架中的上传下载

    Struts+Spring+Hibernate实现上传下载    本文将围绕SSH文件上传下载的主题,向您详细讲述如何开发基于SSH的Web程序。SSH各框架的均为当前最新版本:  •Struts 1.2  •Spring 1.2.5  •Hibernate 3.0 ...

    struts in Action

    1. 介绍.........................................................................................................18 1.1. 关于本书...........................................................................

    【项目实战案例】java校园订餐系统项目(web端)

    【项目实战案例】java校园订餐系统项目(web端) /* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl ...import org.apache.struts.action.ActionMapping; import com.bean.HzpBean;

    struts1流程和原理

    struts1的几个核心组件是值得我们注意的: 1 、ActionServlet(核心控制器)。 2、RequestProcessor类(处理异常的核心组件)。 3、ActionForm(接收页面中传过... 6、ActionMapping(配置每个Action所对应的映射关系)。

    数据库建表,携程网,java开发

    public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { String action =request.getParameter("action"); System.out.println(...

    利用SSH框架做的登录小例子

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { LoginForm loginForm = (LoginForm) form;// TODO Auto-generated ...

    POI导入导出EXCEL文件.(struts 1.x and struts2.x).doc

    public ActionForward getDownload(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { Form fm = (Form) actionForm; // ...

    Java无条件分页查询

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { UserForm uf = (UserForm)form; PageBean pb = new PageBean(); ...

    Struts in Action[文字版][中文]

    7.设计ActionMapping 8.和女主角Action对象共舞 9.扩展ActionServlet 10。显示动态内容 11.用Tiles开发应用 12.用户输入校验 13.本地化 14.在Struts中使用数据服务 15.Artinus:全力以赴实际应用 16.回家:迁移到...

    structs程序设计从入门到精通word文档

    7.2 定义ActionMapping属性 12 7.3 使用局部和全局ActionForward 12 第8章 设计、使用Action 12 8.1 理解Action 12 8.2 使用基本的Action 13 8.3 Action的实践 13 8.4 Struts中的Action类的工作机制; 13 8.5 Struts...

    Struts框架及标记库

    1.3.3 ActionMapping类 10 1.3.4 Action类 10 1.3.5 ActionForm类 11 1.3.6 ActionForward类 12 1.3.7 错误处理 12 2 Struts标记库 14 2.1 Struts标记库 14 2.1.1 Bean标记 14 2.1.1.1 Bean复制标记 14 2.1.1.2 定义...

    jsp编写的网上书店

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionErrors errors=new ActionErrors(); userOPBean...

    Struts中文手册[文字版][中文]

    1.5. ActionMapping 类8 1.6. Action 类.8 1.6.1. Action 类的方法.9 1.7. ActionForm类9 1.8. ActionForward 类.10 1.9. 错误处理.11 1.9.1. ActionError类11 1.9.2. ActionError类11 2. Struts 标记库13 2.1. Bean...

    Struts_config.xml详解

    parameter="" //指定Actgion的配置参数,在Action类的execute()方法中,可以调用ActionMapping对象的getParameter()方法来读取该配置参数。(相当于初始化赋值) &gt;&gt;&gt; prefix=""// 指定填充当前 Action 关联 FormBean...

    struts中文学习资料.doc

    3.3 ActionMapping类……………………………………………………………………9 3.4 Action类……………………………………………………………………………9 3.5 ActionForm类………………………………………………...

    strust文件上传

    public ActionForward upLoadFile(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { ActionForward forward=null; Date date = new ...

Global site tag (gtag.js) - Google Analytics