Struts1的Action继承不同的父类有不同的作用

1.ForwardAction:用于请求转发。

  例如:锚点标记,为了保持MVC的结构,在使用锚点标记是不直接跳转页面,而是通过跳转到XX.do 由ForwardAction实现页面跳转。

  配置:

<action-mappings>

<action path="/toLogin" type="org.apache.struts.actions.ForwardAction" forward="/login.jsp"> 

  </action>

</action-mappings>

  forward属性值为要跳转的页面。

 

2.incluedeAction :用于包含页面。

  Jsp :<jsp:include page="includeWelcome.do"></jsp:include>

  配置:

<action-mappings>

<action path="/includeWelcome" type="org.apache.struts.actions.IncludeAction" parameter="/welcome.jsp">

 </action>

</action-mappings>

 

3.DispatchAction : 用于一个类中实现一组相关业务(同一页面的一个表单多个提交按钮)。

  用法:编写一个类继承DispatchAction ,但切记不能重写DispatchAction 的execute()方法。业         务方法的返回值类型,传递的参数类型以及个数与execute()方法一致。

  缺陷:要用到js代码,如果js被禁用,则不能实现相关业务。

  jsp页面:

<form action="train.do" method="post">

 <input type="hidden" name="training">

  <input type="submit" value="喂食" name="eatbtn" onclick="training.value="eat‘"/>

  <input type="submit" value="讲故事" name="talkbtn" onclick="training.value="talk‘"/>

  <input type="submit" value="游戏" name="playbtn" onclick="training.value="play‘"/>

</form>

  点击按钮之后,隐藏表单提交项的value值必须与DispatchAction中的业务方法的方法名保持一致。

  配置:

<action path="/train" type="com.lovo.struts.action.PetDispatchAction" parameter="training">

  <forward name="petInfo" path="/petInfo.jsp"></forward>

  </action>

 

4.MappingDispatchAction :用于多个表单一个Action处理(分开的页面,处理一个业务)。

   用法:编写一个类继承MappingDispatchAction  ,但切记不能重写MappingDispatchAction 的execute()方法。业务方法的返回值类型,传递的参数类型 以及个数与execute()方法一致。

  Jsp:

<form method="post" action="add.do" name="addForm">

<input type="submit" value="add" name="addBtn">

 </form>

 

<form method="post" action="del.do" name="delForm"> 

      <input type="submit" value="del" name="delBtn"> 

        </form>

 配置:

<action path="/add" type="com.lovo.struts.action.MyMappingDispatchAction" parameter="addStu">

 </action>

 

<action path="/del" type="com.lovo.struts.action.MyMappingDispatchAction" parameter="delStu"> 

 </action>

parameter属性的属性值与必须与 MappingDispatchAction中的业务方法的方法名保持一致。

 

5.LookupDispatchAction : 用于一个类中实现一组相关业务(同一页面的一个表单多个提交按钮)。

   用法:编写一个类继承MappingDispatchAction  ,但切记不能重 写LookupDispatchAction 的execute()方法。业务方法的返回值类型,传递的参数类型 以及个数与execute()方法一致。重写getKeyMethodMap()方法.必须配置一个form-bean.

   

   jsp页面:

<html:form action="train.do" method="post">

<input type="hidden" value= <%= id %> name="petId">

<html:submit property="playBtn">

<bean:message key="button.eat"/>

</html:submit>

<html:submit property="playBtn">

<bean:message key="button.talk"/>

</html:submit>

<html:submit property="playBtn">

<bean:message key="button.play"/>

</html:submit>

</html:form>

 在使用LookupDispatchAction时,jsp页面要用到struts的html标签库和bean标签库.以及    propperties配置文件.html标签的property的值必须一致.html标签的key的值对应propperties中的值.

 

 配置:

<form-bean name="lookup" type="org.apache.struts.action.DynaActionForm"></form-bean>

 

<action path="/train" type="com.lovo.struts.action.PetLookupDispatchAction"     name="lookup" parameter="playBtn"> 

 <forward name="petInfo" path="/petInfo.jsp"></forward> 

 </action>

 

 parameter属性的值必须与html标签的property的值一致.

 

6.SwitchAction:用于多个配置文件之间的页面跳转.

   XML中的配置:

<init-param> 

  <param-name>config/t87</param-name> 

  <param-value>/WEB-INF/struts-moduleA.xml</param-value> 

</init-param>

 

   struts-config.xml中的配置:

<action path="/toT87" type="org.apache.struts.actions.SwitchAction">

 

时间: 2024-10-29 19:07:05

Struts1的Action继承不同的父类有不同的作用的相关文章

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类。 (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法。 (3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承。 (4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。 分析以上程

继承的基本概念: (1)Java不支持多继承,也就是说子类至多只能有一个父类. (2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法.(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承.(4)子类中定义的成员方法,并且这个方法的名字返回类型,以及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承. 分析以上程序示例,主要疑惑点是“子类继承父类的成员变量,父类对象是否会实例化?私有成员变量是否会被继承?被继承的成员变量

javascript模拟实现继承,继承一次父类模板和原型对象

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getS

struts2的action是线程安全的,struts1的action不是线程安全的真正原因

为什么struts2的action是线程安全的,struts1的action不是线程安全的? 先对struts1和struts2的原理做一个简单的讲解 对于struts1 ,当第一次**.do的请求过来时,在内存中的actionmapping中找到相对应的action,然后new出这个action放在缓存中,当第二次一样的请求过来时,还是找的这个action,所以对于struts1来说,action是单实例的 ,只有一个,如果在action中定义变量,就要非常小心了,因为并发问题,可能带来灾难性

java类继承总结一 父类类型与子类类型之间的转化问题(转)

java类继承总结一 父类类型与子类类型之间的转化问题 本文将通过一个实例描述父类类型与子类类型之间的转化问题,这个很特殊的问题常常会导致一些潜在的危险,让你整整一个晚上都在调试程序以解决一个让人抓狂的java.lang.ArrayStoreException异常. 1. 子类数组的引用可以装换为超类数组的引用 2. 子类的引用child可以转换为父类的引用parent(这里假设parent是父类对象,child是子类对象),但却不可以通过 parent调用child的特有方法 class Em

子类继承和调用父类的构造方法 (转)

子类继承和调用父类的构造方法1.如果子类没有定义构造方法,则调用父类的无参数的构造方法,.2.如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法.3.如果子类调用父类带参数的构造方法,可以通过super(参数)调用所需要的父类的构造方法,切该语句做为子类构造方法中的第一条语句.4.如果某个构造方法调用类中的其他的构造方法,则可以用this(参数),切该语句放在构造方法的第一条.说白了:原则就是,先调用父亲的.(没有就默认调

action继承actionSupport

action继承actionSupport为了方便实现Action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类, 并重载(Override)此类里的String execute()方法,因为ActionSupport已经实现了Action接口, 还实现了Validateable接口,提供了数据校验功能.通过继承该ActionSupport类,可以简化Struts 2的Action开发.  Action 跟 Actionsupport 的区别:

Java基础-继承-子类与父类执行顺序

代码 public class Test { public static void main(String[] args) { new Circle(); } } class Draw { public Draw(String type) { System.out.println(type+" draw constructor"); } } class Shape { private Draw draw = new Draw("shape"); public Sha

python 类 六:继承自动寻找父类

本系列博客(python 类) 的部分例子来自于 <<python 核心编程 第二版>> 前面我们谈到 python 继承,是可以引用父类的__init__方法的 ,并在此基础上添加子类自己的特殊的属性的设定,形成子类自己的__init__  构造函数. 在这种方法中,必须显示的指出父类的名字. #coding:utf-8 class p(object):     def __init__(self,nm):         self.name  = nm class c(p):

python 类 四 : 类的继承与覆盖父类方法

python 继承,子类可以覆盖父类的各种方法,包括__init__方法. 如果要覆盖父类的__init__方法,且希望在覆盖的方法中引用父类的__init__方法,比如在父类的__init__方法的基础上增加一些属性的设置或者其他. 则需要显示的引用父类的方法,否则,父类的方法不会被直接调用到的. 比如: #coding:utf-8 # c继承了p,并实现了自己的__init__方法,也就是重新实现了__init__方法,但为了减少代码冗余 # c在自己的__init__方法里面引用了p的__