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

先来了解一下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的路径名就应该是login
public class LoginAction extends ActionSupport{
	@Autowired
	private 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/


你可能感兴趣的:(java,struts2,ssh2,convention,零配置)