Struts2 ——2、各种Action写法和配置
?当一个Struts框架被搭建完成以后,紧接着就要开始具体地去接触Action了。如果对于如何搭建框架还是不太清楚的话,建议查看我的文章《Struts2 ——1、从零开始》或者搜索相关文章。
?对于Struts中的Action,我个人按照访问的方式将其分为了四类:
?这也就是我们在《Struts2 ——1、从零开始》里面写的那段代码。因为他什么功能都没有做,只是演示一个转向功能。而这个功能在struts.xml里面可以直接配置转向,而不必通过我写的这个Action,在《Struts2 ——1、从零开始解释》中--“什么是可以不需要的?”这一段有介绍。
这种Action的配置我们可以使用
?
二、包含execute方法的Action。
?三、一个Action中包含多个方法,在struts中指定调用的方法名
如果所有的应用都要写成的以上的样子,估计一个项目中一定会类泛滥了,我们很希望将逻辑上相关的一些方法放到同一个类里面去。这该怎么做呢?
有办法:
?同样这个时候我们需要完成我们的页面的开发。
页面代码
?同样page2就不加赘述了。${AccessBy}就是在从Action的方法中传过来的值。
部署以后访问的路径是:
page2的访问:
?
?四、动态方法调用,不需要再struts配置文件中指定方法名。
上面这种方式使得类变得“浓缩”了,如果一个业务中要进行增删改查的操作不必要写上四个甚至更多的Action只需要一个Action将所有的功能都包括在内就可以了,但是这个时候,我们还在想,类是少了,但是在struts的配置文件似乎一个也没有少,并且还在配置的时候多了一个method要加上,当业务比较复杂的时候会不会出现配置过于复杂的问题。
struts2中提供这样一种机制:令人振奋的动态方法调用DMI
。
他的点在于访问的时候指定处理的类,指定处理的方法,而不需要再配置文件里面详细地再去配置。
?同时我们配置Struts.xml中的Action
page2:
?
这里我们需要补充result的内容:到目前为止除了在动态方法调用里面指定了result标签里面的name属性,别的地方均无配置,当没有配置的时候,默认的值是name="success",同时也是告诉我们,当仅仅返回success的时候name属性可以省略。
而name属性究竟对应的是什么呢?相信大多数人都已经知道了,就是在Action中指定方法的返回String的。由于在别的action例子中没有返回各种值的情况,因此都没有做区分,而在动态方法调用的介绍里面由于访问的是一个Action配置项,这个时候我们就要考虑某一次返回的值究竟对应的是哪个页面了,所以在相应的方法里面做了不同返回值的区分。
?
?
正在编写中。。。