5_ ActionMethod_DMI_动态方法调用
部署Struts2_0500_ActionMethod 项目 ,访问http://localhost:8080/Struts2_0500_ActionMethod/
这个小程序说的是 Action在执行的时候了不一定要执行 execute()方法,
这里的struts.xml中我们配置了一个package,两个action ,package的名字叫做user,它的namespace对应的也叫user,所以你访问的时候应该是user下面的action的名字叫做userAdd ,添加用户,这就是一个请求了,具体是这个请求的返回的结果其实你可以动态的指定,对应的处理类是UserAction,接下来是第三个参数 method 等于什么,这个参数的意思是当我们调用userAdd这个action的时候,它会调用对应的UserAction.java
我这个类里面根本没有execute()方法,只有add()方法,只要你这个add()方法的返回值是一个String类型的,那么想调什么就调什么。在这里我就用return SUCCESS; 因为我们是从ActionSupport父类继承的,所以可以直接用它里面的常量,
所以我们来看一下我们的第一个链接,点击 添加用户链接
我们的第一个链接是这样的,user下面的userAdd 这个action。如下图所示
在这个action里面,它返回的是SUCCESS,所以他要找到对应的result,对应的result是 user_add_success.jsp页面,在这个JSP页面里面就一句话,User Add Success!,如下图所示:
拿到了返回的结果,那如果还有delete()方法了,那么我们就再建第二个action,叫做userDelete ,如果是第三个方法了,那么就叫userUpdate ,好这是一种方式,不过这种方式不推荐大家用,这个讲完之后,大家有可以忘了,原因是Struts 2 里面还有另外的一种访问方式,我们来看第二个action,
大家看这个action我就叫 user,就是说不管你想调用它里面什么样的方法,它都叫user,对应的action处理类是 com.bjsxt.struts2.user.action.UserAction ,我也不指定它的方法是哪一个,result跟原来是一样的,但是在我调用 它的时候,可以这么来调用,大家回来看看第二个链接,如下图所示
这种调用方式是user下面的userAction感叹号 add,指的就是说我就调用 那个userAction里面的那个add方法,所以这叫做动态的方法调用,有称为DMI,第二种是不是更简单,第二种如果我要是有很多的方法的话,我还是只需要配置一个action,所以如果你要用就用第二种,第一种可以忘了 ,
面试的时候,有人问你,method,你挠挠头,告诉他,老大你们还要用method 吗?我们都是用动态的,或者是后面好要讲的通配符。