Struts2 框架分析

1.Struts 2执行过程解析;

login.jsp----->StrutsPrePareAndExecuteFilter--------->Action-------------->Result-------------------->manage.jsp

Action 

怎样在struts.xml中配置Action

<action name="LoginAction" class="cn.wwy.action.LoginAction">
//结果为success时跳转到Login.jsp
<result name="success">/Login.jsp</result> </action>-

Result

1.当Web容器收到请求后,将请求交由在web.xml中配置的Struts 2 框架的控制器StrutsPrepareAndExecuteFilter(核心控制器)

2.由StrutsPrepareAndExecuteFilter的确请求对应的Action(业务控制器)

3.框架根据Action返回的结果字符串,由StrtsPrepareAndExecuteFilter选择对应的result,将结果呈现给用户。

动态结果:

<default-action-ref name="ExctionAction"></default-action-ref>
        <action name="ExctionAction">
            <result>/errorAction.jsp</result>
        </action>-->
        <!--<action name="LoginAction" class="cn.wwy.action.LoginAction">
            <result name="success">/Login.jsp</result>
        </action>

1.ActionMapper

提供了在请求和Action调用请求之间的映射,ActionMapper根据请求的URl来查找是否存在对应的Action调用请求,如果有,则返回一个描述Action映射的ActionMapping对象,没有就为null

2.ActionMapping 

ActionMaping保存了调用Action的映射信息,其中必须保存Action的命名空间信息和name属性信息。

3.ActionProxy

ActionProxy在XWork和真正的Action之间充当代理,在执行Action的过程中,因为使用代理而非直接操纵对象,所以可以在Action执行前后额外操作。ActionProxy创建了ActionInvocation对象。

4.Actionlnvocation

ActionInvocation 表示Action的执行状态,它保存拦截器Action的实例,Actionlnvocation由ActionProxy创建,通过调用invoke()方法开始Action的执行,执行的顺序为按配置执行拦截器,拦截器执行完毕后,执行Action,Action执行结束返回结果字符串,匹配对应的Result后,在一次执行拦截器。

5.Interceptor(拦截器)

拦截器是一种可以在请求处理以前或者之后执行的Struts2.拦截器是Struts 2的重要特性,Struts 2框架的绝大多数功能是通过拦截器完成的。

public class MyTimer extends AbstractInterceptor {
    public String intercept(ActionInvocation invocation) throws Exception {

        long timeMillis = System.currentTimeMillis();
        System.out.println("开始时间"+timeMillis);
        String invoke = invocation.invoke();
        long time=System.currentTimeMillis();
        System.out.println("结束时间"+timeMillis);
        long s = time - timeMillis;
        System.out.println("一共时间"+s);
        return invoke;
    }
}
 <interceptors>
            <interceptor name="MyTime" class="cn.wwy.action.MyTimer"></interceptor>
        </interceptors>
<action name="action" class="cn.wwy.action.LoginAction">
<result name="success">/Login.jsp</result>
<interceptor-ref name="MyTime"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>

 

 

 

 

转载于:https://www.cnblogs.com/xiaoyu1997/p/6501923.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值