跟着项目走, 现在的项目需要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 来指定入口方法。