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页面的命名规范就是类名的前一部分加上方法名 -->