关于struts2使用配置文件的配置方式,前面已经说过了,大家应该很熟悉了,使用配置文件的方式进行配置,虽然简单易配,但是随着项目的扩大,配置文件会越来越多,这样就会变的凌乱,繁杂,所以今天给大家说一下struts2基于annotation的配置,也就是平常我们所说的零配置。
通过上面的约定进行配置后,细心的友友可能会发现,那么我想请求UserAction里面的login()方法怎么办呢?是的,这些零配置都是针对execute()方法的,如果我们要想针对其他方法,就必须要写annotation了。
/*
要实现零配置,首先必须要导入jar包,struts2-convention-plugin-2.3.1.2.jar,然后大家知道要实现零配置肯定要遵守约定,现在的这些ssh框架,都是约定大于配置的。
1>包名:包名必须是xx.xx.action(actions, struts, struts2)这种形式。
2>类名:你的aciton类名必须是XxxAction形式,比如下面的UserAction
3>请求名:按照上面的约定写好包名和类名后,那么你的默认请求名就为xxx.action(XxxAction的首字母小写,并去掉Action,然后加上.action),比如说下面的UserAction默认请求名就为user.action,,当然了这是针对execute()方法的。
4>请求页面:必须要在项目的/WEB-INF/下面新建一个content文件夹,路径也就是/WEB-INF/content,然后页面名字为:请求名-返回值.jsp ,比如说user.action的execute()方法返回值为success,那么它的请求页面为:user-success.jsp,如果返回值为input,那么请求页面名字为:user-input.jsp.
*/
public class UserAction {
public String execute() {
return "success";
}
public String login() {
return "input";
}
}
/*
通过上面的约定进行配置后,细心的友友可能会发现,那么我想请求UserAction里面的login()方法怎么办呢?是的,这些零配置都是针对execute()方法的,如果我们要想针对其他方法,就必须要写annotation了。
public class UserAction {
@Action("index")
public String execute() {
return "success";
}
@Action(value="login",results={
@Result=(name="input",location="xxx.jsp", type="xxx",params={key,value,key,value},interceptorRefs={@InterceptorRef=(param="xxx")})
})
public String login() {
return "input";
}
}
/*
@Action()括号里面如果只有一个参数配置,那么就可以把@Action(value=“xxx”),简写成
@Action("xxx"),如果有多个参数,那么就不能简写了。就需要像login()方法上面的格式进行编写。
1>results:里面可以写多个@Result()只要中间以逗号隔开即可:results={@Result(),@Result()},另外results也可以写在public class UserAction的头上,格式为:@Results({@Result=(),@Result=()});
2>name:name和xml配置文件里意思一样
3>location:需要跳转的页面
4>type:跳转方式
5>params:参数配置,格式为:奇数为key,偶数为value
6>interceptorRefs:拦截器配置,配置多个也要以逗号分割开来(和results一样,也是可以写在public class UserAction的头上的,格式也是一样的)
*/