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 
 
  |   
 
 
 
 |