一  struts 2.1中,用convention去代替了code-behind, 
  
convention用法: 
1、默认拦截action,actions,struts,struts2包名下面的Action为结尾或者继承ActionSupport的类。 
    
   当然也可以改 <constant name="struts.convention.package.locators" value="web"/> VALUE中指定 
WEB目录及子目录下Action为结尾或者继承ActionSupport的类 
,这样的话,不用再写struts.xml中的配置 
   比如在地址栏中输入hello.action 
则去找com.xxxx.web包下HelloAction.java的对应的action类中的excute方法, 
 如果是hello!hello.action,则找 HelloAction.java中的hello方法 
然后去   WEB-INF\content\hello.jsp 找对应的页面显示。 
如果不想设定这个目录,则可以设置: 
 <constant name="struts.convention.result.path" value="/WEB-INF/jsp/"/> 
2 如果访问的名字为 hello-world.action 
则访问HelloWorld.action类(去掉-号)  WEB-INF\content\hello-world.jsp 
<constant name="struts.convention.action.name.separator" value="."/> 则可以改变多个单词之间的分隔符, 
这样的话,可以用 
    hello.world.action去访问,同时web-inf\content\hello.world.jsp要改成相应的.号 
3 @action的使用 
   @Action("/langsin") 
 public String mth1(){ 
 System.out.println(" mth1 ok"); 
 return SUCCESS; 
 } 
    同时在web-inf/jsP中配置langsin.jsp,则访问xxxx/langsin.action,会访问mth1方法,输出mth1 ok 
   如果有多个方法,多个action的注解,比如: 
   @Action("/langsin") 
 public String mth1(){ 
 System.out.println(" mth1 ok"); 
 return SUCCESS; 
 } 
 @Action("/iceman") 
 public String mth2(){ 
 System.out.println(" mth2 ok"); 
 return SUCCESS; 
 } 
  则可以xxxx/langsin!mth2.action访问mth2方法,输出System.out.println(" mth2 ok"),注意用的JSP 
页为langsin.jsp,而不是用iceman.jsp 
同理 xxx/iceman!mth1.action访问mth1方法,输出mth1 ok 
4 如果src\com.web一个包,而在com.web下又有一个子目录user,比如src\com.web.user\UserAction.java, 
则必须同时在web-inf\jsp\user\user.jsp, 
然后访问时,用http://xxxx/user/user.action访问 
  
  命名空间: 
@Action("/langsin/iceman") 
 public String mth3(){ 
 System.out.println(" mth3 ok"); 
 return SUCCESS; 
 } 
   则web-inf\jsp\langsin\iceman.jsp 
5 
  @Actions({ 
 @Action("/one"), 
 @Action("/two") 
 }) 
 public String mth4(){ 
 System.out.println(" mth4 ok"); 
 return SUCCESS; 
 } 
  能同时映射多个, 
    
6 返回值的映射 
   @Action("rs") 
 public String mth5(){ 
 System.out.println(" mth5 ok"); 
 return "error"; 
 } 
    访问的是rs_error.jsp(action的名字-返回值的名字) 
7 命名空间 
   @Namespace("/helloworld") 
public class HelloWorld extends ActionSupport { 
  。。。。。 
 @Action("langsin") 
 public String mth1(){ 
 System.out.println(" mth1 ok"); 
 return SUCCESS; 
 } 
     要用http://xxx/helloworld/langsin.action访问,并且映射的是web-inf\jsp\helloworld目录下的langsin.jsp 
而如果  @Action("/langsin"),则覆盖掉namespace了,不需要用namespace 
 直接http://xxx/langsin.action即可,但访问的是web-inf\jsp下的langsin.jsp 
8 拦截器 
   @InterceptorRefs({ 
 @InterceptorRef("otherInterceptor"), 
 @InterceptorRef("myInterceptorStack") 
}) 
 。。。。。。。。。。。。。。 
9  <constant name="struts.convention.action.name.lowercase" value="false"/> 
  说明JSP用大写映射规则,比如Hello-World.action,映射到Hello-World.jsp ,区分大小写,一般该值取TRUE 









