2.Action的使用

1.驱动方式:

1.属性驱动 :

.方式一:直接在action添加属性 ,注意要添加get和set方法 创建成员变量,变量名称和form表单中的name属性名称一致

.方式二:通过JavaBean的方式使用

  1.将需要的值封装到一个类中
  2.jsp页面form表单中的name属性值需要设置为 成员变量.属性名

action中声明JavaBean变量。同时添加Get和Set方法 ,表单中name属性中加变量名前缀

2.Action的使用

2.模型驱动:

* 模型驱动
 * 1.实现ModelDriven接口
 * 2.实现里面的getModel方法
 * 3.jsp页面中的name属性值,改为和ModelDriven接口中的类属性名一致
 * 4.成员变量必须实例化,getModel方法返回这个成员变量

1.action实现ModelDriven,指定泛型

2.声明JavaBean的成员变量并实例化

3.重写getModel(),返回JavaBean的实例

2.Action的使用

模型驱动为主,属性驱动为辅,两者配合使用


2.Action的3种实现方式:

1.简单的Java对象【POJO】

2.实现Action接口  5个常量

SUCCESS  NONE    ERROR    INPUT    LOGIN   

execute()方法  当没有指定要调用的方法的时 候会执行的

3.继承ActionSupport类 

实现了Action接口,支持验证框架,支持国际化


3:Action文件在配置文件中的配置方式:

1.静态方式

1.1.直接在Action节点中通过method属性制定调用的方法 代码多,不方便,但可读性高

<action name="userDelete" class="com.hd.controller.UserAction1" method="delete">
            <result name="list" >/jsp/userlist.jsp</result>
         </action>

2.通配符方式:通配符从1开始--{ }   推荐使用通配符的方式使用

<!-- 
通配符的方式配置:
高版本(2.3以后)只能访问1-2个方法,解决方式,在package节点中配置strict-method-invocation="false"
-->
<action name="user_*" class="com.hd.action.UserAction" method="{1}">
<!-- 允许通过通配符方式访问的方法 add,update,delete query 方法名  -->
<allowed-methods>add,update,delete,query</allowed-methods>
</action> 

除了加<allowed>也可以在<action>中添加:

<package name="myPack" extends="struts-default" namespace="/user" 
strict-method-invocation="false">

strict-method-invocation="false"  严格的方法访问

两个方法:

<action name="user_*_*" class="com.hd.controller.UserAction1" method="{1}">
            <result name="list" >/jsp/{2}.jsp</result>
         </action>




2.动态方式:

2.3以上版本要添加常量

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

strict-method-invocation="false" 同样要添加

<action name="user" class="com.hd.controller.UserAction1" >
            <result name="list" >/jsp/userlist.jsp</result>
         </action>

请求方式:http://.../user/user!save


不太推荐,和通配符有点类似,!的方式容易被黑客利用,看懂别人的代码