struts2 学习备忘

    技术2022-05-20  75

          跟着项目走, 现在的项目需要struts2, 那就需要学习的一下struts2 的使用。

          无配置现在是主流了, 这个我很早就预计的到了。

    自动注入 Form, 重点是实现 getModel() 方法。

          使用 ModelDriven 的方式, Action 类或其父类必须实现 com.opensymphony.xwork2.ModelDriven 接口。

    private MyForm form; //MyForm 是一个对应表单的类 public MyForm getModel() { return form; }

              如果还实现 com.opensymphony.xwork2.Preparable 接口 public void prepare() throws Exception { //Action 方法执行前执行的方法 //Struts 要抢Spring 的饭碗? }  

    请求 URL 对应类

    login.action 对应 com.XXX.web .LoginAction.java 至于其的命名空间 :   com.XXX.web , 自己配置的。

    请求 /org/ ac-application .action 对应 com.XXX.web . org. AcApplication Action ,

    注意类是驼峰大写, 文件时小写中间加 - , 还有在命名空间中的层次关系, org ”;

    当请求 /login!query.action , 将调用 LoginAction query() 方法,当请求 /login!save.action 时,将调用 LoginAction save() 方法。

    Struts.xml 中配置了寻址 Action 类的方式

          <constant name="struts.convention.package.locators" value="web" /> <constant name="struts.convention.package.locators.basePackage" value="com.XXXX" />

        从这个配置信息中,我们可以大概知道 Action 类得位置:

    com.XXXX.*****[.****].web.***Action.java

          5. 可以通过 元注释:

                   @Action("/different/url" )

                   或 

                   @Actions({       

                         @Action("/different/url" ),

                         @Action("/another/url" ) }

                   )

       这两个元注释可以写于 Action 类中修饰某个方法。

    请求跳转,使用元注释 @ Results 一般放在 class 上面修饰 例子:@Results({ @Result(name="failure", location="fail.jsp") }) public class XxxxAction{……..}  格式:@Results( @Result(name=””, location=””, type=””,params={“key0”,”value”””}),N…. ) Name和location是必要的,name是跳转字符串标识,location是跳转页面或action。 Type 的值有redirect , stream(文件下载) params 是一个key-value对。  Action 类入口方法

    默认是 public String execute(), 返回的跳转标识字符串。

           可以通过 Xxx!method.action 来指定入口方法。


    最新回复(0)