<action name="auth" >的执行流程是怎样的?

来源:5-3 创建自定义拦截器及拦截器栈实现权限校验

慕圣0830664

2017-07-22 11:44

<action name="auth" >

<result>/WEB-INF/page/manager.jsp</result>

<result name="login">/login.jsp</result>

<!-- 引用自定义拦截器栈 -->

<interceptor-ref name="myStack"></interceptor-ref>

</action>

有没有哪位大神解释一下,上面这段代码的执行流程。。。

写回答 关注

2回答

  • 慕圣0830664
    2017-07-24 01:19:56

    我自己是这样理解的,因为auth没有指定对应的action,所以系统会自动生成一个默认的action,该action默认返回SUCCESS。在视频中,老师第一次通过auth可以直接访问/WEB-INF/page/manager.jsp,就是因为那个默认的action返回了一个SUCCESS,而且,那时候并没有加入我们自定义的拦截器,所以可以直接访问WEB-INF下的文件。后来,我们自定义了的拦截器和拦截器栈,在自定义拦截器中添加了相关的处理代码,并在auth的action中引用了myStack,这时候auth执行的流程发生了变化。当用户直接在URL中输入auth后,这时候它会经过多个拦截器,自然也会被我们自定义的拦截器拦截到,接着执行拦截器中的处理代码,判断用户是否成功登陆过,如果没有成功登陆过,则返回登陆页面;如果已成功登陆过,则通过invoke()方法调用默认的action,因为默认的action默认返回SUCCESS,然后跳转到/WEB-INF/page/manager.jsp页面。整个执行的流程应该就是这样子的。。。

  • 攻城师Lv1
    2017-07-23 22:20:28

    首先, 你得关注还有一个name="login"的action 它能够获取到session, 然后在auth中它会先执行拦截器myStack,获取到session 判断是否存在 ,存在的话就就调用invoke方法 将“success”字符串返回给result 否则就返回一个“login字符串 ”(因为此action为默认action 在调用invoke时不会执行action) 然后再调用一次拦截器 ,最后返回字符串给result 我的理解 流程就这样。

Struts2拦截器浅析

本视频教程将代领大家了解Struts2拦截器的工作原理及配置

37980 学习 · 118 问题

查看课程

相似问题