Struts2零配置

Struts2零配置

 

1. 先在web.xml中配置:

<filter>
    <filter-name>struts2</filter-name>
     <filter-class>org.apache.struts2.dispatcher.FilterDispatcher </filter-class>
    <init-param>
        <param-name>actionPackages</param-name>
        <param-value>struts.action,demo.actions2</param-value>
    </init-param>
</filter>
//说明1
Struts2扫描到Action后,从actionPackages指定的包开始,子包名会成为这个Action的namespace,而Action的name则由这个Action的类名决定。
action名字的规则是这样的:将action name从任何“Action”后缀前面截取掉,如果action name含有“/”的话,那么将最后一个“/”后面的第一个字母变为小写。
举例明:

如果我们的actionPackages参数是struts.action,我们的Action类是struts.action.manager.UsersAction

那么我们可以通过下面的url来访问这个类:http://localhost:8080/Struts2CM/manager/users.action .

也就是子包(subpackage)将成为namespace,而action类名将成为action name。如果类名有一个“Action”后缀,那么它将被去掉。

 

//说明2

Controller从actionPackages参数所指向的包struts.action,demo.actions2这两个包中去寻找action,具体的流程是这样的:

1.系统首先通过web.xml文件装载FilterDispatcher类,它要有actionPackages参数

2.FilterDispatcher会初始化一个Dispatcher,并传递actionPackages的值

3.Dispatcher会初始化一个ClasspathConfigurationProvider对象,用它来存放一个或多个Configuration Providers

4.Dispatcher给ConfigurationManager对象增加一个ClasspathConfigurationProvider来处理actionPackages参数

5.Someone会调用ClasspathConfigurationProvider的loadpackages方法

6.Loadpackages会首先利用ResolverUtil从所列package(就是actionPackages参数的值)中找到所有实现了Action接口和名字带有Action后缀的类,然后这些类会集中放入一个Set集合中,然后这个Set中的每个类都会被传递给processActionClass方法

7.processActionClass首先确定命名空间,然后捕捉任何ParentPackage和Results类型的Annotation,接着创建一个ActionConfig,设置action name,package name以及results。

 

 

 

 2. 在action类文件中加入anotation功能:【主要是添加result】

package struts.action;

import hibernate.*;
import java.util.*;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.apache.struts2.config.NullResult;
import org.apache.struts2.config.Result;
import org.apache.struts2.config.Results;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ActionContext;
@Results({   
 @Result(name="add", value="/add.jsp", type=NullResult.class),   
 @Result(name="list", value="/list.jsp", type=NullResult.class),
 @Result(name="update", value="/update.jsp", type=NullResult.class),
 @Result(name="index", value="/index.jsp", type=NullResult.class),
 @Result(name="delete", value="/delete.jsp", type=NullResult.class),
 @Result(name="detail", value="/detail.jsp", type=NullResult.class)
 })

public class UsersAction extends ActionSupport

{

 Users u=new Users();
 
 public String add() throws Exception
 {
    //...  

 }
 
     //...  

}

 

3. 在使用动态方法调用来实现类似dispatchaction的功能:

 

1. 先设置Struts2允许动态方法调用。设置struts.enable.DynamicMethodInvocation常量为true。

在struts.xml中设置如下:

<struts>
 <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
</struts>

在访问时,如下:users!list.action

     【表示调用UsersAction类的list()方法】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值