一 简单起步
1.web.xml 文件配置
  <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

 
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 
2.建一个action
1.struct2文件配置一个action
     <action name="hello" class="helloWorldAction">
            <result name="success">/HelloWorld.jsp</result>
     </action>

 
[action标记解析]
name:表示action的名称.struct根据name名来匹配请求,配备上交有配备的action处理
class:是action类名
result标记的name:表示result名称,action处理完成返回值与action标记内的name匹配,匹配上转到相应显示视图显示

 
2.建一个action类.
struct2的action是一个POJO类.视图传过来的参数通过action的get,set方法获取
通过继承ActionSupport获的struct框架的一些支持,
获取session:  ActionContext.getContext().getSession();
获取response: 
HttpServletResponse resp = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);
获取request:        
HttpServletRequest request = (HttpServletRequest)  ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);

 

 
3.一个action于多个请求匹配上
方法1.action内建n个方法
struct根据url的action name!方法名来匹配action的相应方法来处理
note:
struct2默认跟请求匹配的action的execute方法来处理,如果url请求没哟写方法名则execute方法来处理。

 
方法2.action名称通过适配符来匹配请求url.
        <action name="*World" class="org.hwz.demo.action.WorldAction" method="{1}">
            <interceptor-ref name="timer"/>
            <interceptor-ref name="logger"/>
            <result name="success">/HelloWorld.jsp</result>
        </action>
请求是什么XXXXWorld,则action匹配上.使用action的XXX方法来处理

 
二 struct拦截器
1.使用struct提供拦截器
struct有提供一些常用的拦截器,如果时间,日志等。在action标记下添加<interceptor>就ok
     <action name="hello" class="helloWorldAction">         
           <interceptor-ref name="timer"/><!--时间拦截器-->
            <interceptor-ref name="logger"/><!--日志拦截器-->
            <result name="success">/HelloWorld.jsp</result>
     </action>

 
2.使用拦截器堆栈
声明拦截器堆 ,在interceptors标记下声明interceptor-stack,相当于拦截器组合按照先进先执行 
<interceptors>
            <interceptor-stack name="appDefault">
                <interceptor-ref name="timer"/>
                <interceptor-ref name="logger"/>
                <interceptor-ref name="demoInterceptors"/>
            </interceptor-stack>
</interceptors>

 
在action配置使用拦截器堆
     <action name="hello" class="helloWorldAction">         
           <interceptor-ref name="appDefault"/><!--name为拦截器堆的名称-->
            <result name="success">/HelloWorld.jsp</result>
     </action>

 
3.创建自定义的拦截器
继承AbstractInterceptor类实现intercept方法
  public String intercept(ActionInvocation actionInvocation) throws Exception {
        System.out.println("intercept");
        return actionInvocation.invoke();//继续执行action
    }

 
    @Override
    public void init() {
        super.init();    //To change body of overridden methods use File | Settings | File Templates.
        System.out.println("init");
    }

 
    @Override
    public void destroy() {
        super.destroy();    //To change body of overridden methods use File | Settings | File Templates.
        System.out.println("destroy");
    }

 
在struct.xml文件声明自定义的拦截器
<interceptors>
 <interceptor name="demoInterceptors" class="org.hwz.demo.interceptor.DemoInterceptor"/>
</interceptors>
action 通过  <interceptor-ref name="demoInterceptors" >来使用该配置