Struts2,Action的几种书写方式和通配符的使用

1.第一种方法:

package com.maya.test1;
import java.text.DateFormat;
import java.util.Calendar;
import com.opensymphony.xwork2.ActionSupport;

public class GetAction1 extends ActionSupport {
private String date;
@Override
public String execute() throws Exception { 
return super.execute();
}
//如下所示通过调用action中的方法直接在页面中显示
public String yi(){ 
date=DateFormat.getInstance().format(Calendar.getInstance 
().getTime());
return date;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
<!-- XML,action配置 -->
<constant name="struts.enable.DynamicMethodInvocation" 
value="true" /><!-- 动态方法激发,默认是false -->
<constant name="struts.devMode" value="true" /><!-- 跟踪,生成 
很多调试信息,开发时写为true -->
此时动态方法激发要改为true,才能正确执行

<!-- 当我请求getAction1时在地址栏后面跟上!加上其action中方法, 
就可以成功调用 -->
<action name="getAction1" 
class="com.maya.test1.GetAction1">
<result name="yi">GetDate.jsp</result>
</action>

(上面的方法,不常用知道就好了)

2.第二种方法:

package com.maya.action;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class InfoAction extends ActionSupport{ 
@Override
public String execute() throws Exception { 
return SUCCESS;
}
public String add(){

return SUCCESS;
} 
}
<action name="Info_add" class="com.maya.action.InfoAction" 
method="add"><!-- method的属性值要与action中的方法名一致 -->
<result>Info_find</result>
</action>

但是如果写的方法太多,一个方法一个action的这样写的话,就会显得非
常多,所以一般采用通配符的方式进行规范化。(如下所示)

<action name="*_*" class="com.maya.action.{1}Action" method="{2}">
            <result name="success">{1}_{2}.jsp</result>
        </action>
        <!--
             第一个星一般都是写成action类名的第一部分Info,后一个星代表方法名,
            所以{1},{2}就能自动匹配,我们就少写了很多的代码,
            所以jsp页面的命名规范就是类名的前一部分加上方法名
         -->
原文地址:https://www.cnblogs.com/AnswerTheQuestion/p/6545016.html