struts2注解笔记1

一  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

你可能感兴趣的:(struts2)