该问题的最初来源,是源于Struts中的 return SUCCESS; 和 return "success";
在Struts的配置文件struts.xml我们可以找到"success"的配置
该"success"指向的是一个action或者一个jsp。
这里笔者就很好奇,SUCCESS指向的是一个什么方法,它的返回值是什么。毕竟在配置文件中没有找到配置SUCCESS的语句。
作为一个新手,笔者看到这种大写的,在eclipse中显示粗体斜体的,自然的就想到了,这个变量是一个静态常量,毕竟只有静态常亮才能在其他类中不定义就直接使用(静态常亮在程式开始的时候就被创建在内存中,可以直接被使用,静态方法也是如此),一般来说,定义成静态常量的会加一个final的修饰符,不允许被修改它的值。
那只能通过SUCCESS本身去找答案了。进入SUCEESS的.class文件中,笔者终于找到了答案。
原来在Struts中,它把一些常用的SUCCESS, NONE, ERROR, INPOUT, LOGIN 都定义了一遍。SUCCESS其实就是"success"。看到这里,终于明白了SUCCESS是什么了。
在此,笔者就想到了一个问题,使用其他类的静态常量是需要"类名.静态常量"这样的格式来获得的,那为什么在Struts 的Action中能直接使用SUCCESS呢?
这个问题貌似只有一个答案,这个Action继承了定义SUCCESS的类。
那就一步一步往前找。
自己定义的Action继承了ActionSupport
这个ActionSupport友继承了定义SUCCESS的接口。
这里笔者找到了满意的答案。
在此,笔者又看到了abstract这个烦人的东西,接口,继承,抽象类。