然后看老师的5-2、5-3的登录例子,如果是先执行拦截器来验证登录信息是否正确,那么拦截器得到的session里面的userName永远都是空的,因为action还没执行,还没保存用户名到session,而你拦截器就用了session,所以永远登录不了。
2017-03-25
在action当中,应用了自定义的拦截器myStack,并且放在了action里面的最后一行,意味着,是先执行action代码,然后再执行拦截器mystack,通过的话就返回jsp页面;
但是如果把应用拦截器的代码放在了定义action代码里面的第一行的话,是执行拦截器mystack,然后再执行action的。
但是如果把应用拦截器的代码放在了定义action代码里面的第一行的话,是执行拦截器mystack,然后再执行action的。
2017-03-25
例如下面所示:
<action name="login" class="actions.loginAction" method="login">
<result name="success">/WEB-INF/page/manager.jsp</result>
<result name="error">/login.jsp</result>
<interceptor-ref name="myStack"></interceptor-ref>
</action>
<action name="login" class="actions.loginAction" method="login">
<result name="success">/WEB-INF/page/manager.jsp</result>
<result name="error">/login.jsp</result>
<interceptor-ref name="myStack"></interceptor-ref>
</action>
2017-03-25
老师您好,前天我看了您的视频,通过自己的实验,发现您有些地方讲错了
在第一讲中,讲到strut2框架执行流程的时候,讲到了拦截器的执行顺序。老师说的是先执行拦截器1->2->3,然后再执行action,就是这里应该是讲错了。我觉得对于自定义的拦截器,不是这样执行的,自定义拦截器执行的顺序应该是与在Struct.xml文件当中放在action标签里的位置有关。例如下面所示:
在第一讲中,讲到strut2框架执行流程的时候,讲到了拦截器的执行顺序。老师说的是先执行拦截器1->2->3,然后再执行action,就是这里应该是讲错了。我觉得对于自定义的拦截器,不是这样执行的,自定义拦截器执行的顺序应该是与在Struct.xml文件当中放在action标签里的位置有关。例如下面所示:
2017-03-25
The content of element type "package" must match "(result-types?,interceptors?...
package里元素必须按照一定的顺序排列:
result-types
interceptors
default-interceptor-ref
default-action-ref
default-class-ref
global-results
global-exception-mappings
action*(所有action放到最后)
package里元素必须按照一定的顺序排列:
result-types
interceptors
default-interceptor-ref
default-action-ref
default-class-ref
global-results
global-exception-mappings
action*(所有action放到最后)
2017-03-21
程序流程:访问auth时先通过AuthInterceptor拦截器判断是否有登录状态(判断session中是否存在loginInfo键值对)
如果存在则直接访问,不存在 则跳转至login登录界面,在登录界面输入正确的账号密码后,成功访问
并且在session中保存loginInfo键值对,下一次能够直接访问auth 如果输入不正确,则继续跳转login登录页面
并且在session中保存loginError键值对,让login页面获取并显示错误提示
如果存在则直接访问,不存在 则跳转至login登录界面,在登录界面输入正确的账号密码后,成功访问
并且在session中保存loginInfo键值对,下一次能够直接访问auth 如果输入不正确,则继续跳转login登录页面
并且在session中保存loginError键值对,让login页面获取并显示错误提示
2017-03-17