<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-67  評論-522  文章-0  trackbacks-0
        通過之前的Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解實例詳解系列文章,我們已經(jīng)成功將這三種框架整合到了一起,這次大象將在此基礎(chǔ)上用一個小實例來說明,怎么利用Struts2的攔截器特性實現(xiàn)登錄驗證,以及超時后的跳轉(zhuǎn)問題。
        大象在這里假設(shè)你已經(jīng)弄清楚了Struts2攔截器的基本概念,可以進入實際運用了。那么我們在之前的基礎(chǔ)上只需要做下小小的改變,就可以使用Struts2的攔截器機制實現(xiàn)登錄的驗證。
        修改數(shù)據(jù)庫
        user表中增加password字段,將初始密碼都設(shè)為123,因為是示例所以采用明碼,實際開發(fā)中,當然不能這樣做,需要進行加密處理。再將name改為username,其實name字段可以不用改名,我這樣做是為了命名規(guī)范,請注意,如果字段改為usernameUser類中的對應(yīng)屬性也要進行相應(yīng)變化(如果你加注釋寫法可以不用改),還有TestTestHibernateDao中的getName()都要改為getUsername()
        修改index.jsp
        hello.action改為login!welcome.action
        增加登錄類
        web包下創(chuàng)建LoginAction類,在其中添加welcomelogin方法,前者為index.jsp的跳轉(zhuǎn)方法,它將轉(zhuǎn)向到login.jsp頁面。而后者則用來處理登錄事件,如果成功將進入到主頁面,失敗則返回到登錄頁面。最后面有源碼下載,這里省略。
        增加攔截器
        要實現(xiàn)登錄攔截的功能,最關(guān)鍵的就是要實現(xiàn)攔截類了,在common包下面再增加一個interceptor包,創(chuàng)建AuthorityInterceptor類,并繼承MethodFilterInterceptor,為什么繼承它呢?因為它是對方法進行攔截,而在這個應(yīng)用中,我們是對絕大部分的方法進行攔截,而對個別例外的方法排除。
        
        session中取得當前登錄用戶,如果存在,就繼續(xù)執(zhí)行后面的攔截器;否則,就跳轉(zhuǎn)到登錄頁面。所以這樣實現(xiàn)了代碼后,還要在struts.xml中進行相應(yīng)的設(shè)置。
        增加攔截器配置
       
        做好這一步之后,那么登錄驗證攔截器將會對除了welcomelogin之外的所有方法進行攔截了。另外我想說下,攔截器的實現(xiàn)還有一種注解的方式,它不需要實現(xiàn)攔截器類,只需要指定一個注解類型和一個攔截方法就可以了,具體的請自己去查相關(guān)資料。這里我沒采取注解方式是因為它只能應(yīng)用到方法級別,不能進行代碼復(fù)用,如果有多個Action都需要執(zhí)行攔截操作,那么就得把同樣的注解方法復(fù)制到不同的Action中,這無疑是很糟糕的。而使用攔截器類就簡單多了,只需要在配置文件中指定它,并引用它,就可以在任意的Action中生效,也沒有侵入式代碼,這就是常說的AOP切面,struts2的攔截器就是AOP的一個具體實現(xiàn)。
        增加全局轉(zhuǎn)向配置
       
        還記得攔截器里面的return Action.LOGIN 這句吧,當程序執(zhí)行完這一行后,就會到struts.xml文件中去找namelogin全局轉(zhuǎn)向配置,因此這里我設(shè)置為一個jsp頁面,而沒有定義成/login!welcome.action就是因為如果按這樣做了,那么轉(zhuǎn)向后,登錄頁面將顯示在iframe框架中,這肯定不是我們希望看到的。解決這個問題,網(wǎng)上有很多方法,我查了一下,再結(jié)合實際,其實沒那么復(fù)雜,一句話就可以搞定。如果使用frameset這種做法也有效,大象同樣測試過,只不過例子中的代碼沒有這樣寫而已。
        增加jump.jsp
       
        增加login.jsp
        登錄頁面,輸入用戶名與密碼,因為是例子,所以我沒加驗證碼,在正式開發(fā)中應(yīng)該加上。
       
        增加login-index.jsp
        這是登錄成功后轉(zhuǎn)向的頁面,在這里,我用iframe框架來顯示內(nèi)容。
       
        到這里,所有工作都已經(jīng)完成,已經(jīng)可以登錄登出了,并且攔截器也可以正常工作,超時登出也沒問題,大家下載例子運行看看吧!
        源碼下載: ssh2-interceptor
        本文為菠蘿大象原創(chuàng),如要轉(zhuǎn)載請注明出處。http://bolo.blogjava.net/
    posted on 2010-08-28 14:14 菠蘿大象 閱讀(29452) 評論(12)  編輯  收藏 所屬分類: Struts2

    評論:
    # re: 基于SSH2框架Struts2攔截器的登錄驗證實現(xiàn) 2011-05-09 11:40 | taote
    大象好久沒有更新博客了!!!!!  回復(fù)  更多評論
      
    # re: 基于SSH2框架Struts2攔截器的登錄驗證實現(xiàn) 2011-06-03 14:04 | bryan
    水印圖案讓人看起來很不舒服,可以將字變大,少點.  回復(fù)  更多評論
      
    # re: 基于SSH2框架Struts2攔截器的登錄驗證實現(xiàn) 2011-06-03 14:16 | 菠蘿大象
    @bryan
    這已經(jīng)是很大的字號了,再大,會很丑,我試過,圖片的顯示只是幫助文章進行說明,具體的請看源代碼,另外你說看起來很不舒服?我感覺還好吧,可能是你沒習慣而已,不要太計較圖片水印,關(guān)鍵是我的東西對你有沒有用,看個開頭就知道是否要繼續(xù)看下去,如果不適合你,請立馬關(guān)掉網(wǎng)頁,不要對水印這些無關(guān)緊要的東西糾結(jié)來糾結(jié)去了,只要不影響閱讀就行,如果你實在不爽,那不看總可以吧  回復(fù)  更多評論
      
    # re: 基于SSH2框架Struts2攔截器的登錄驗證實現(xiàn) 2011-06-17 00:33 | 王德超
    很好  回復(fù)  更多評論
      
    # re: 基于SSH2框架Struts2攔截器的登錄驗證實現(xiàn) 2011-08-03 10:58 | gameover
    <interceptor-ref name="authority">
    <param name="excludeMethods">welcome,login</param>
    </interceptor-ref>

    為什么我執(zhí)行l(wèi)ongin這樣的action還是會被攔截呢 我把他們配置在一個struts.xml里面的。。。有個login的action。 怎么才攔截這個呢?  回復(fù)  更多評論
      
    # re: 基于SSH2框架Struts2攔截器的登錄驗證實現(xiàn) 2011-08-03 11:26 | 菠蘿大象
    @gameover
    這個excludeMethods表示不攔截welcome與login方法  回復(fù)  更多評論
      
    # re: 基于SSH2框架Struts2攔截器的登錄驗證實現(xiàn) 2011-08-03 12:56 | gameover
    @菠蘿大象
    這個意思我是明白, 我是這樣配置的


    <package name="hrms" extends="struts-default">
    <interceptors>
    <!-- 登錄驗證攔截器 -->
    <interceptor name="authority" class="com.bolo.examples.common.interceptor.AuthorityInterceptor" />
    <interceptor-stack name="boloStack">
    <!-- 將登錄驗證攔截器加入默認的攔截器棧中 -->
    <interceptor-ref name="authority">
    <param name="excludeMethods">welcome,login</param>
    </interceptor-ref>
    <interceptor-ref name="paramsPrepareParamsStack" />
    </interceptor-stack>
    </interceptors>
    <default-interceptor-ref name="boloStack" />
    <global-results>
    <result name="login">/jump.jsp</result>
    </global-results>
    <action name="login" class="com.qieryee.ssi.struts.action.login">
    <result name="success">/index.jsp</result>
    <result name="input">/login.jsp</result>
    </action>
    <action name="loginout" class="com.qieryee.ssi.struts.action.login"
    method="loginout">
    <result name="success">/index.jsp</result>
    <result name="input">/login.jsp</result>

    我不知道所謂的方法是"method" 還是action 如login.action
    我前面就沒有像你前面那些聲明
    如果我除開login.action外所有action都要被攔截器攔截 這個該怎么配置呢?
    我這樣有什么不對么
    </action>   回復(fù)  更多評論
      
    # re: 基于SSH2框架Struts2攔截器的登錄驗證實現(xiàn) 2012-06-08 13:35 | 搬個菠蘿曬太陽
    請問怎么在ssh框架中實現(xiàn)一個簡單的頁面跳轉(zhuǎn),這個需不需要攔截器?  回復(fù)  更多評論
      
    # re: 基于SSH2框架Struts2攔截器的登錄驗證實現(xiàn) 2012-06-08 13:38 | 菠蘿大象
    @搬個菠蘿曬太陽
    頁面跳轉(zhuǎn)要通過Action來執(zhí)行轉(zhuǎn)向,攔截器是需要實現(xiàn)某種功能才會用到的  回復(fù)  更多評論
      
    # re: 基于SSH2框架Struts2攔截器的登錄驗證實現(xiàn) 2013-01-17 16:20 | dohkoos
    @gameover

    例如:welcome!login.action
    這里的excludeMethods里的method指的是login,而不是welcome。

    > 如果我除開login.action外所有action都要被攔截器攔截 這個該怎么配置呢?
    如果要做到這部的話,就需要從Interceptor或AbstractInterceptor繼承,然后去除actionName做判斷。  回復(fù)  更多評論
      
    # re: 基于SSH2框架Struts2攔截器的登錄驗證實現(xiàn) 2013-04-22 15:22 | thankyou
    thankyou  回復(fù)  更多評論
      
    # re: 基于SSH2框架Struts2攔截器的登錄驗證實現(xiàn) 2016-07-17 15:20 | zombie
    感謝  回復(fù)  更多評論
      
    主站蜘蛛池模板: 99久久99久久精品免费看蜜桃 | 国产成人免费在线| 国产V亚洲V天堂无码久久久| 羞羞的视频在线免费观看| 无码人妻久久一区二区三区免费丨| 亚洲午夜精品一区二区公牛电影院| 久久久精品免费国产四虎| 亚洲中文字幕久久精品无码APP| 日韩在线视频播放免费视频完整版| 人人狠狠综合久久亚洲高清| 高潮内射免费看片| 中文有码亚洲制服av片| 免费中文字幕在线| 成在人线av无码免费高潮喷水| 国产精品亚洲精品日韩已满| 在线观看免费av网站| 亚洲精品无码中文久久字幕| 免费在线观看黄色毛片| 久久不见久久见中文字幕免费 | 日本免费一区二区久久人人澡| 亚洲欧洲日产国码在线观看| 在线jlzzjlzz免费播放| 日韩色日韩视频亚洲网站| 亚洲小说区图片区另类春色| 在线视频精品免费| 99热免费在线观看| 色多多A级毛片免费看| 春暖花开亚洲性无区一区二区| 国产亚洲精品免费| 亚洲中文字幕无码久久精品1| 亚洲福利精品一区二区三区| 91高清免费国产自产拍2021| 日韩精品内射视频免费观看| 久久综合九色综合97免费下载| 99久久99这里只有免费的精品| 亚洲中文精品久久久久久不卡| 国产av无码专区亚洲av桃花庵| 久久精品亚洲男人的天堂| 国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频 | 亚洲国产综合无码一区| 久久99国产亚洲高清观看首页|