Struts2属性驱动与模型驱动以及excute方法

本文深入解析Struts框架的execute方法及工作原理,探讨属性驱动与模型驱动的区别与应用,同时介绍Struts框架中的内置Action类及其作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.excute方法

  在structs.xml配置文件中,<action>里面如果没有写method属性,默认就会执行ActionSupport类里的excut方法。

1.Action类的execute()方法返回ActionForward对象,它包含了请求转发路径信息

(public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response)

(1)ActionMapping:包含了这个Action的配置信息,和strutsconfig.xml文件中的<action>元素对应。

(2)ActionForm:包含了用户的表单数据,当Struts框架调用execute()方法时,ActionForm中的数据已经通过了表单验证。

(3)HttpServletRequest:当前的HTTP请求对象

(4)HttpServletResponse:当前的HTTP响应对象

2.public String execute()类(默认)

3.内置的Struts Action类:
–org.apache.struts.actions.ForwardAction
–org.apache.struts.actions.IncludeAction
–org.apache.struts.actions.DispatchAction
–org.apache.struts.actions.LookupDispatchAction
–org.apache.struts.actions.SwitchAction。
4.模型代表应用的业务数据和业务逻辑。Struts作为一个WEB框架并没有为创建模型组件提供现成的框架。但是Struts允许使用其它模型框架来处理应用的业务逻辑。比如:EJB、JDO、JavaBean、ORM、Spring等。

二Struts2属性驱动与模型驱动

1.为什么要使用属性驱动和模型驱动

struts2与struts很大的不同点在于,struts的execute方法提供了HttpServletRequest和HttpServletResponse方法在获取客户端提交的数据信息的时候需要使用HttpServletRequest的getParameter()方法,并且还需要进行必要的数据类型转换。如何客户端提交的数据量大的时候,我们则需要写很多的getParameter方法。这样代码量就相应的增加不少。但是struts2为我们提供了属性驱动和模型驱动,它不需要我们写很多的获取值的方法。而只需要我们在Action中定义相应的getter方法,在界面上以Action中的变量名作为表单元素的name属性值即可。

2.属性驱动

对于属性驱动,我们需要在Action中定义与表单元素对应的所有的属性,因而在Action中会出现很多的getter和setter方法

3.模型驱动(getModel()类返回一个对象)

对于模型驱动,使用的Action对象需要实现ModelDriven接口并给定所需要的类型.而在Action中我们只需要定义一个封装所有数据信息的javabean

4.属性和模型驱动的相同点

当我们使用属性驱动和模型驱动的时候,必须将表单的元素中的name属性值与我们定义接收数据信息的变量名对应起来。

三.注意

1、属性驱动:

(1).表单中的name值和对应的action类中的私有属性的属性名称一定要一致;

(2).action类中所有的私有属性必须有其getter和setter方法;

2.模型驱动:

(1).action类还要实现ModelDriven<T>  接口;

(2).ModelDriven<T>  接口中的泛型类 是要封装 的pojo类(比如:ModelDriven<User>);

(3).action类中要有如下声明,比如:private Users us = new Users();

注意,一定要实例化us,不能只声明而不初始化;

(4).action类中要实现ModelDriven<T>接口的getModel()方法,里面要返回已声明并初始化的pojo对象。

(5).模型驱动的struts.xml配置文件中还要为该action添加如下两个拦截器:

<interceptor-ref name="modelDriven"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值