Struts功能详解——ActionMapping对象

ActionMapping描述了struts中用户请求路径和Action的映射关系,在struts中每个ActionMapping都是通过path属性和一个特定的用户请求URL关联。它负责转发用户请求给具体的Action,同时还转发了其他的一些相关信息,这种请求和处理动作之间的映射关系保存在struts-config.xml这个配置文件中,在web服务器初始化的时候,会加载这个配置文件,struts给每一个Action都创建一个ActionMapping对象,用来提供给Action使用,当ActionServlet转发请求的时候,ActionMapping对象会被作为参数传递给Action的execute()方法。
 
 
 
在一个web应用中,每个资源都必须通过URI来进行引用。 资源包括HTML页面,JSP页面,和定制动作。为了给定制动作一个 URI或者说路径,Struts框架提供了一个 ActionMapping对象。

ActionMaping也是Struts的一个核心对象,通常我们不用手写ActionMapping类,它只需要在配置文件中配置就行。

ActionMapping如何配置:

ActionMapping在配置文件Strtus-config.xml中配置,配置格式如下:

  1. <struts-config>
  2. <action-mappings>
  3. <actionpathactionpath="/login"
  4. type="com.bjpowernode.struts.LoginAction"
  5. name="loginForm"
  6. scope="request"
  7. >
  8. <forwardnameforwardname="success" path="/login_success.jsp" />
  9. <forwardnameforwardname="error"path="/login_error.jsp"/>
  10. </action>
  11. </action-mappings>
  12. </struts-config>

其中<action>标签是为每一个独立的action配置,配置他们的访问方式和访问控制。

<forward>标签配置action执行完返回以后,需要到达的地方。

其中name scope type分别是actionMapping的一个属性,它对应着action的需要访问的位置和数据来源,还有数据范围。

ActionMapping的功能:

ActionMapping的主要功能就是管理Action的信息和管理Action执行完成以后的ActionForward的信息。

它将特定请求映射到特定Action的相关信息存储ActionMapping中,ActionServelt将ActionMapping传送到Action类execute()方法,Action将使用ActionMapping的findForward()方法,此方法返回一个指定名称的ActionForward,这样Action就完成了本地转发。若没有找到具体的ActionForward,就返回一个null.

ActionMapping的方法:

publicExceptionConfig findException(Class type) ,查找异常对象

public ActionForwardfindForward(String name) 可在映射中动态添加ActionForward:

public String[]findForwards()找到一个Action可以使用的actionForward列表

public ActionForwardgetInputForward() 得到本action的输入ActionForard.

ActionMapping继承于org.apache.struts.config.ActionConfig

总之,对于ActionMapping来说,起算是一个web控制层的数据字典,这个数据字典里面存放在Action和ActionForward的信息,在程序执行的过程中,查阅这个数据字典,然后达到相应的位置,执行完成以后,再查询这个数据字典,转发特定的信息。

Struts2框架学习的更多相关文章

  1. Struts2框架学习(三) 数据处理

    Struts2框架学习(三) 数据处理 Struts2框架框架使用OGNL语言和值栈技术实现数据的流转处理. 值栈就相当于一个容器,用来存放数据,而OGNL是一种快速查询数据的语言. 值栈:Value ...

  2. Struts2框架学习(二) Action

    Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...

  3. Struts2框架学习(一)

    Struts2框架学习(一) 1,Struts2框架介绍 Struts2框架是MVC流程框架,适合分层开发.框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计. 2 ...

  4. Java之struts2框架学习

    Java之struts2框架学习 About Struts2 Struts也是一款MVC框架 , Struts2是Struts的下一代产品,是在Struts1和WebWork的技术基础上进行了合并的全 ...

  5. [ SSH框架 ] Struts2框架学习之一

    一.Struts2框架的概述 Struts2是一种基于MVC模式的轻量级Web框架,它自问世以来,就受到了广大Web开发者的关注,并广泛应用于各种企业系统的开发中.目前掌握 Struts2框架几乎成为 ...

  6. [ SSH框架 ] Struts2框架学习之二

    一.Struts2访问Servlet的API 前面已经对 Struts2的流程已经执行完成了,但是如果表单中有参数如何进行接收又或者我们需要向页面保存一些数据,又要如何完成呢?我们可以通过学习 Str ...

  7. [ SSH框架 ] Struts2框架学习之四(自定义拦截器)

    一.Struts2的拦截器 1.1 拦截器概述 拦截器,在AOP( Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截 ...

  8. struts2框架学习之第一天

    day01 Struts2概述 1 什么是框架 试想一下,人与人之间不同之处多,还是相同之处多呢?当然是相同之处多,不同之处少!人都有头,而且头都在脖子上面! 软件之间也是相同之处多,不同之处少,框架 ...

  9. struts2框架学习(二)

    ---恢复内容开始--- 一.搭建步奏 1.新建web项目,进行必备Jar包的拷贝,放到lib目录以便项目的引用. 2.拷贝框架的核心配置文件Struts.xml,放到src目录下,保留一个基本配置即 ...

  10. Struts2框架学习笔记--strtus2初识

    struts2概述: 1.struts2框架应用于javaEE三层结构中的Web层框架 2.struts2框架是在struts1和webwork基础之上发展的全新框架(脱胎换骨 ,用法完全不一样)ps ...

随机推荐

  1. C中级 - 文件辅助操作

    引言 - 业务有点麻烦 C 功能很强大, 同样书写起来会谨慎(拖泥带水). 不妨通过一个小问题来描述裹脚的 C 需求: 用 C 创建一个文件! 难点在于 1. 文件路径切割成 目录 + 文件名 2. ...

  2. 对sql作业的总结(PostgreSQL的递归查询)

    已知条件如下: CREATE TABLE appointment ( emp_id integer NOT NULL, jobtitle ) NOT NULL, salary ,) NOT NULL, ...

  3. [Golang学习笔记] 02 命令源码文件

    源码文件的三种类型: 命令源文件:可以直接运行的程序,可以不编译而使用命令“go run”启动.执行. 库源码文件 测试源码文件 面试题:命令源码文件的用途是什么,怎样编写它? 典型回答: 命令源码文 ...

  4. 20145207《Java程序设计》实验四( Android程序设计)实验报告

    <Java 程序设计>实验四( Android程序设计)实验报告 目录 改变 Android开发基础实验要求 实验成果 课后思考 改变 修改了之前仅仅是贴了图片,连代码都没粘的状态.增加了 ...

  5. CF 1138 F. Cooperative Game

    F. Cooperative Game 链接 题意: 有10个玩家,开始所有玩家在home处,每次可以让一些玩家沿着边前进一步,要求在3(t+c)步以内,到达终点. 分析: 很有意思的一道题.我们构造 ...

  6. python爬虫之Scrapy框架(CrawlSpider)

    提问:如果想要通过爬虫程序去爬取”糗百“全站数据新闻数据的话,有几种实现方法? 方法一:基于Scrapy框架中的Spider的递归爬去进行实现的(Request模块回调) 方法二:基于CrawlSpi ...

  7. 菜鸟vimer成长记——第2.4章、cmd-line模式

    cmd-line模式又有3个类型:Ex 命令(ex commands).查找模式(Search patterns).Filter 命令(Filter commands).本文主要重点的是Ex 命令和S ...

  8. Python 字符串 整数 浮点数

    • 几个函数: str() : 将一个整数或者浮点数变成字符串 int() : 将一个浮点数或一个字符串变成整数 float : 将一个整数或者字符串变成一个浮点型数据 • 整数的运算永远是精确的,而 ...

  9. python容器类型的协议

    1.协议(Protocols)与其他编程语言中的接口恒相似,它规定你哪些地方必须要定义,然而在python中的协议就显得不那么正式,事实上,在python中,协议更像是一种指南. 2.序列类型和映射类 ...

  10. 我是如何将页面加载时间从6S降到2S的?

    写在前面 生活在信息爆炸的今天,我们每天不得不面对和过滤海量的信息--无疑是焦躁和浮动的,这就意味着用户对你站点投入的时间可能是及其吝啬的(当然有一些刚需站点除外). 如何给用户提供迅速的响应就显得十 ...