TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
1,通过@注解实现Action零配置
零配置的原理是在Action类中使用@注解定义Action的资源,如@Namespace,@Result等。@Namespace定义命名空间,一般不常用。@Results定义结果集,可以包括多个@Result,@Result定义一个结果集。
package com.zhangjie.struts2.action;
import org.apache.struts2.config.Namespace;
import org.apache.struts2.config.Result;
import org.apache.struts2.config.Results;
import org.apache.struts2.dispatcher.ServletRedirectResult;
import com.opensymphony.xwork2.ActionSupport;
@Namespace(value="/") //命名空间
@Results({
@Result(name = "success",value = "/success.jsp"),
@Result(name = "redirect",value = "/redirect.jsp",type=ServletRedirectResult.class),
@Result(name = "login",value = "/login.jsp")
})
public class AnnotatedAction extends ActionSupport {
public String execute(){
return "login";
}
public String add(){
return "success";
}
public String login(){
return "login";
}
}
2,web.xml中指定Action目录
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
<param-name>actionPackages</param-name><!-- 零配置Action所在的包 -->
<param-value>com.zhangjie.struts2.action</param-value><!-- 包名-->
</init-param>
</filter>
注:strust加载时会自动部署本package下的所有Action。如果某个Action位于本package下的另一个package下面,例如com.zhangjie.struts2.test,则"/test"会被当成该Action的namespace。默认的"/test"也可以用@Namespace标注覆盖。如果声明了actionPackages参数,则struts.xml中的配置会失效。目前,strust2只允许使用一种配置方式。要么使用struts.xml,要么使用零配置。
3,零配置的Action访问方式
http://localhost:2010/strust2/annotated.action访问,即去掉类名中的Action,同时首字母小写;
如果访问add方法则:http://localhost:2010/struts2/annotated!add.action
|
|