今天我们接着讲解Struts2这个框架。

这是Struts2的执行流程,昨天那篇文章我们并没有在action中实现什么功能,现在说一下如果在action中实现功能。
这里很明显action替代了servlet,但是我们如何接收前台传来的参数呢?
首先我们可以用servlet中的方式---通过request对象来getParamter();当然我们在action中要首先创建request对象。
既然我们用action来替代servlet那必然在action中可以用action的方式来实现功能,在action中可以用参数绑定来实现。
那什么是参数绑定呢?
struts提供将请求参数自动封装到pojo对象、集合对象等中,这个过程就是参数绑定
struts2提供参数绑定的机制,可以将请求的参数绑定到action类的属性中
参数绑定中我们要通过属性进行驱动,那何为属性驱动?
属性驱动是struts2提供的一种参数绑定机制,如果按照struts指定的开发规则,自动请求的参数设置(赋值)到struts的action类的属性中。
属性驱动开发规则:
1、确定请求参数的名称
2、在action类中添加属性,属性名和参数名称一致,并且添加, get/set方法。
真正规则:setXXXXX()这个set方法的后边的XXXX(首字母变为小写)和参数名称一致。
属性驱动支持不同action类属性类型:包括基本类型(string/int。。。)、list、map、数组、pojo。
好了那我们下面来一个小例子:

我们前台界面有2个参数,现在我们开始用action来接收:

这是我们的action与执行结果,但是我们一定要注意我们的form表单的name一定要与action中的属性名相同,但是如果我们有很多属性全都在action中来写会有很多不便,所以我们action中的属性可以直接是一个对象,来看下面的例子:


如果改成这样我们的前台form表单要注意了,里边的name属性要写对象名.属性名:

看一下结果:

这样用起来是不是很方便!
然后说一下Struts.xml的中的问题
1.全局result
在以前的result我们经常会跳转到同一个页面,这样显得很繁琐,所以我们可以设置全局result这样就解决了这个问题。

我们只需要在package中加入这个全局result就可以啦!
在action中定义的result为局部的result,首先会找局部 result有没有,如果有则使用,如果没有找全局result.
最后是动态配置访问(实际开发中用)
何为动态呢,我们先看一个例子

我们action中的name不再是名称而是一个通配符,后面的method里边是{1},这是什么意思呢?就是说{1}代表第一个通配符代表的字符,因为这个action是*也就是说我在前台输入的是 任意.action都可以调用到这个action,比如我在前台调用的是add.action那么我这里就是name=add method=add,这样做的好处就是说我可以不用写多个action,再解释一下关于{1},比如的name有2个通配符
*_*就像这样,我在前台输入的是 add_students.action ,那么{1}获取到的就是add; {2}获取到的就是students,这样可以有效的减少代码量。




