Convention插件实现Struts2.1以上版本零配置

来源:互联网 发布:手机照片缩小软件 编辑:程序博客网 时间:2024/06/06 03:16

先来了解一下Convention吧,Convention插件完全工作在后台,Convention插件默认的搜索位于struts,struts2,action或者actions包下的java类。Action类必须实现com.opensymphony.xwork2.Action或者名字以Action结尾。 那么现在Convention插件就知道了为一个特别的请求调用相应的Action类,下一步是找到跳转的视图,Convention插件会默认的从WEB-INF/content目录中搜索。现在虽然Convention插件知道视图在那儿,但是并不知道去使用那个视图文件,这就得根据Action类返回的结果。

要使用这种方式,首先action要继承com.opensymphony.xwork2.ActionSupport类,然后在WEB-INF/content目录下建立以action名称首字母小写的jsp文件。再使用@Action(value="")对action类进行注解(注解知识这里不再做叙述)即可。----当调用的方法的返回值在result中有定义的话,那么会返回到result中定义的路径,如果没有定义,会自动到WEB-INF/content找到相对应的jsp文件,然后返回(如:action名为:LoginAction,那么jsp名字为loginAction.jsp的情况下才会自动默认搜索)。

action文件示例:

@Action(value = "loginAction", results = { @Result(name = "aaa", location = "/ok.jsp")})//@Action 为可选项,不填,将会自动选择,如LoginAction的路径名就应该是loginpublic class LoginAction extends ActionSupport{@Autowiredprivate UserDao userDao;private String msg;public String execute(){System.out.println("this is loginAction");return "aaa";}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}}


当然,这段代码中,必然会去找到ok.jsp,而如上所说,如果没有定义的话,那么将会自动寻找对应的。
此外,还可以对action进行定义路径,即定义namespace
当@Namespace("/test")对action进行注解的时候,那么action对应的jsp页面的路径应该为WEB-INF/content/test/


原创粉丝点击