然后看老師的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