ActionMapping

在Struts中,ActionServlet只是任务的分派者,它依请求分配任务给其它的对象来执行,而分配的依据是请求的URI以及struts-config.xml的<action-mappings>卷标所设定的内容。

<action-mappings>用来描述一组ActionMapping对象,当中的每一个<action>卷标都对应一个ActionMapping对象,当客户端发出请求至ActionServlet时,ActionServlet根据其URI及<action>卷标设定的path属性查看对应的ActionMapping对象,ActionMapping对象会告诉ActionServlet该使用哪一个Action对象(在<action>卷标中使用type属性设定),而ActionServlet再将工作交给该Action对象来执行。

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


代码:


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

<action 
        path="Logout" 
        type="onlyfun.caterpillar.LogoutAction"> 
        .... 
    </action> 
</action-mappings>

则当请求的URL是http://localhost:8080/HelloStruts/Login.do,ActionServlet会使用/Login来找出path设定为Login的ActionMapping对象,该ActionMapping对象告知ActionServlet要使用onlyfun.caterpillar.LoginAction,而后ActionServlet会将呼叫LoginAction的execute()方法,并将ActionMapping对象当作参数传递给它。

ActionServlet实际上将工作交给Action对象,然而Action对象的运作必须提供一些参数来描述工作的细节,诸如使用哪一个ActionForm、forward对象的查找、错误发生时的页面对象等等,Struts将这些信息包装在ActionMapping中,并作为参数传送给Action对象,以使得Action在需要相关的信息时可以从ActionMapping中取得。

对于没有定义的ActionMapping,如果客户端请求了怎么办?Struts会丢出 404 Invalid path 的讯息,您可以撰写匿名的ActionMapping来提供自己的错误讯息:

则当请求的URL是http://localhost:8080/HelloStruts/Login.do,ActionServlet会使用/Login来找出path设定为Login的ActionMapping对象,该ActionMapping对象告知ActionServlet要使用onlyfun.caterpillar.LoginAction,而后ActionServlet会将呼叫LoginAction的execute()方法,并将ActionMapping对象当作参数传递给它。

ActionServlet实际上将工作交给Action对象,然而Action对象的运作必须提供一些参数来描述工作的细节,诸如使用哪一个ActionForm、forward对象的查找、错误发生时的页面对象等等,Struts将这些信息包装在ActionMapping中,并作为参数传送给Action对象,以使得Action在需要相关的信息时可以从ActionMapping中取得。

对于没有定义的ActionMapping,如果客户端请求了怎么办?Struts会丢出 404 Invalid path 的讯息,您可以撰写匿名的ActionMapping来提供自己的错误讯息:


代码:


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

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

在Struts中,ActionMapping继承自ActionConfig,大部份的属性定义实际上都已经在ActionConfig中完成,不过ActionMapping仍旧存在,根据线上API的说明,继承存在的事实基于它仍是现存应用程序所使用的公用类别

时间: 2024-10-10 10:28:40

ActionMapping的相关文章

【struts1】--ActionMapping

processPath:截取URL processMapping:根据截取的URL获取ActionMapping. processActionForm:根据ActionMapping中的name名称查找ActionForm,如果配置了ActionForm,那么久得到request或session中查找,如果再request或者session中存在已经创建的ActionForm,那么将返回.如果不存在,那么会根据ActionForm的完成路径采用反射进行创建,再将创建好的ActionForm放到r

消除Could not find property [struts.actionMapping]警告的方法

警告信息: 2015-8-19 23:43:57 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn 警告: Could not find property [struts.actionMapping] 2015-8-19 23:43:57 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn 警告: Could not find property

JAVA_Could not find property [struts.actionMapping]怎么办

你的项目中不包含log4j.jar这个文件,包含进去即可

使用Intellij Idea自定义MVC框架

今天我学习了自定义一个简单的MVC框架,这个我们首先要知道什么是MVC框架! MVC框架: MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. 我们今天自己定义的

[Java面试四]Strust2总结及在面试中的一些问题.

1. JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层).业务逻辑层.数据持久层.[其中WEB层会使用前端控制器模式] MVC是一种思想,是一种模式,将软件分为 Model模型.View视图.Controller控制器.[JavaEE开发更强调三层结构,web层开发更注重MVC] Struts2 就是web层开发框架,符合MVC模式:struts1 .webwork .jsf .SpringMVC 都是MVC 2. St

Struts1的实现原理

一 开文背景 -- 废话讲一段~ 本文借助动力节点-王勇老师的视频教程中的引例来了解struts1的实现原理,虽然现在已经很少使用struts1了,但是了解了其原理之后,对了解其他mvc框架还是有较大的帮助的. 二 简介 -- 切入主题 struts1主要实现从请求到servlet的映射. e.g. 现有的一个业务为实现用户的添加删除修改,按照原有的model2的原理可以实现上述功能. 2.1没有struts1之前的基于model2 mvc的实现. 直接在servlet中实现如下代码: Stri

struts2请求过程源码分析

Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在WebWork基础之上的Struts2是一个运行稳定.性能优异.设计成熟的WEB框架. 我这里的struts2源码是从官网下载的一个最新的struts-2.3.15.1-src.zip,将其解压即可.里面的目录页文件非常的多,我们只需要定位到struts-2.3.15.1\src\core

SSH—Struts(三)—执行器(Action)

前面已经介绍了Struts的基本原理和控制器ActionServlet,按照一个请求的流程经过了ActionServlet之后就要到达Action类中做具体的处理了.ActionServlet通过ActionMapping获取映射的Action对象,通过Action来完成请求的处理,最后Action返回一个ActionForward对象. Action的创建 当请求经过ActionServlet时,ActionServlet会根据请求中截取的地址搜索对应名字的ActionMapping,即Str

struts的学习

在开发工具上进行struts的配置 1)新建项目,为项目添加Struts开发支持 2)为项目添加Struts开发支持,在项目点击右键,myeclipse->Add Struts Capabilities.选择支持的struts版本 3)在项目下的WebRoot下新建一个jsp文件.在Template to use下选在2中选择的struts版本 配置hello.jsp <%@ page language="java" pageEncoding="GBK"