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

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

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

    posts - 78, comments - 34, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

         摘要: Struts2第二天,大家似乎沒有從年假中蘇醒過來,上課顯得有些疲憊。不過還好,聽課效果還不錯。今日的主要內容是OGNL,Struts2使用OGNL訪問contextMap和valueStack。老張很執著,他在研究Struts2時遇到的一些問題,一定要解決,并且要詳細解決。通過他在講課中,我們可以看出這一點。有開發經驗的人都知道,我們時而被陌生技術的一個小細節搞的暈頭轉向,耗費了大半天的時間我們...  閱讀全文

    posted @ 2010-02-22 16:59 長城 閱讀(746) | 評論 (0)編輯 收藏

         摘要:          春節假期終于結束了,假期內在北京只出去轉了兩天,感覺很好!剩余時間呆在屋子里寫了個練習程序收獲頗豐。          依然迫不及待,迫不及待的學完課程趕緊回大連。我想除了我,很多同學和網友也都期待著今天由張考祥老師主講的Strut...  閱讀全文

    posted @ 2010-02-20 23:56 長城 閱讀(579) | 評論 (0)編輯 收藏

         摘要:          今日教育辦公系統結束。新內容有:導出數據到PDF文檔、生成圖表(餅圖、柱圖...),整體上操作比較簡單。   一、創建PDF文檔          我們使用iText創建PDF文檔,需要到http://itext...  閱讀全文

    posted @ 2010-02-09 01:25 長城 閱讀(491) | 評論 (0)編輯 收藏

         摘要:          今日我們已經將權限模塊與員工管理整合完畢,但下午有學習新的內容。將數據導出為excel表格,或從excel表格導入數據。這一項功能比較常用!在Windows平臺下微軟有為我們提供Office的COM套件,Apache為我們提供的poi正是為Java打造的Office套件。    &...  閱讀全文

    posted @ 2010-02-08 00:30 長城 閱讀(387) | 評論 (0)編輯 收藏

    spring-security最后一天,今天的主要內容是將需要指定權限才可以訪問的資源放到數據庫中,脫離applicationContext.xml配置文件。然后我們將近兩天學習的srping-security整合到教育辦公系統中。


    我們繼續昨天的內容,將資源文件信息保存到數據庫中。



    1.applicationContext.xml

    將昨天applicationContext.xml“配置SpringSecurityhttp安全服務”部分的內容替換為:

    <sec:http auto-config="true" session-fixation-protection="none" />

    <bean

    class="org.springframework.security.intercept.web.FilterSecurityInterceptor"

    autowire="byType">

    <sec:custom-filter before="AUTHENTICATION_PROCESSING_FILTER"/>

    <property name="objectDefinitionSource" ref="objectDefinitionSource"/>

    </bean>

    這里的objectDefinitionSource是下邊的類,cutom-filter是在調用AUTHENTICATION_PROCESSING_FILTER過濾器之前調用FilterSecurityInterceptor


    2.添加數據表

    resc表與role表是多對多關系。


    1).resc

    image

    2).resc_role

    image

    3.相關類

    要讓spring-security可以從數據庫中獲取相關資源信息,我們必須編寫一個實現FactoryBean接口的類。

    package cn.itcast.cc.spring.security;


    import java.util.LinkedHashMap;

    import java.util.Map;

    import javax.annotation.Resource;

    import org.springframework.beans.factory.FactoryBean;

    import org.springframework.security.ConfigAttributeDefinition;

    import org.springframework.security.ConfigAttributeEditor;

    import org.springframework.security.intercept.web.DefaultFilterInvocationDefinitionSource;

    import org.springframework.security.intercept.web.RequestKey;

    import org.springframework.security.util.AntUrlPathMatcher;

    import org.springframework.security.util.UrlMatcher;

    import org.springframework.stereotype.Component;


    @Component("objectDefinitionSource")

    public class DefaultFilterInvocationDefinitionSourceImpl implements FactoryBean {


    @Resource

    ResourceDetailsService resourceDetailsService;


    private UrlMatcher getUrlMatcher() {

    UrlMatcher urlMatcher = new AntUrlPathMatcher();

    return urlMatcher;

    }


    @Override

    public Object getObject() throws Exception {

    UrlMatcher urlMatcher = this.getUrlMatcher();

    // 獲取數據Map

    Map<String, String> srcMap = resourceDetailsService.buildRequestMap();

    LinkedHashMap<RequestKey, Object> requestMap = new LinkedHashMap<RequestKey, Object>();

    ConfigAttributeEditor editor = new ConfigAttributeEditor();

    // 轉換數據Map

    for (Map.Entry<String, String> entry : srcMap.entrySet()) {

    String url = entry.getKey();

    String roles = entry.getValue();

    if (roles != null) {

    editor.setAsText(roles);

    requestMap.put(new RequestKey(url), editor.getValue());

    } else {

    requestMap.put(new RequestKey(url), ConfigAttributeDefinition.NO_ATTRIBUTES);

    }

    }

    // 生成并返回對象

    return new DefaultFilterInvocationDefinitionSource(urlMatcher,

    requestMap);

    }


    @Override

    public Class getObjectType() {

    return null;

    }


    @Override

    public boolean isSingleton() {

    return false;

    }


    }


    其中ResourceDetailsService接口的實現類如下:

    package cn.itcast.cc.spring.security;


    import java.util.HashMap;

    import java.util.List;

    import java.util.Map;

    import javax.annotation.Resource;

    import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;

    import org.springframework.stereotype.Component;


    @Component("userDetailsService")

    public class ResourceDetailsServiceImpl implements ResourceDetailsService {


    @Resource

    private SimpleJdbcTemplate jdbcTemplate;

    @Override

    public Map<String, String> buildRequestMap() {

    // 注意:這里需要使用左外連接查詢,是因為有些頁面沒有指定role

    // 即,任何權限都不可以訪問的頁面!

    String sql = "SELECT res_string as url,r.name as role " +

    "FROME resc LEFT JOIN resc_role rr ON rr.resc_id = resc.id " +

    "LEFT JOIN role r ON rr.role_id = r.id";

    List<Map<String, Object>> results = this.jdbcTemplate.queryForList(sql);

    Map<String, String> srcMap = new HashMap<String, String>();

    // 將查詢后的數據拼接并放入到Map

    for(Map<String,Object> val:results){

    String url = (String) val.get("url");

    String role = (String) val.get("role");

    if(srcMap.containsKey(url)){

    role = srcMap.get(url) + "," + role;

    }

    srcMap.put(url, role);

    }

    return srcMap;

    }

    }


    Spring-security還為我們提供了其他實用的輔助功能,具體的google一下吧!

    posted @ 2010-02-04 23:18 長城 閱讀(410) | 評論 (0)編輯 收藏

         摘要:          有沒有發現一個問題,我們之前做的所有練習,都沒的權限管理這個模塊。我們的WEB應用中的同一個帳戶可以在多臺機器上同時登陸,每一個用戶可以操作所有功能模塊。這樣在以后的應用開發中是結對不可行的!          &nb...  閱讀全文

    posted @ 2010-02-03 23:52 長城 閱讀(2629) | 評論 (0)編輯 收藏

     

            今天重點內容是AJAX技術在教育辦公系統中V層的應用,實現的功能有:AJAX分頁查詢、AJAX刪除、AJAX修改。

            還記得學習AJAX時使用JQuery向服務器發送請求,并在回調函數中將返回的數據動態插入到DOM的某處嗎?Yes,我們今天主要就是玩這個技術。感覺沒什么好總結的,就是疊代碼、串代碼,沒什么新鮮東西。


            但我想說的是看著佟佟搞著代碼,操作著頁面多少有些惡心。因為我以前是做桌面的組件沒這么麻煩,也沒這么靈活,但目標都是一樣的——顯示數據,提供給用戶查詢或編輯。所以我要思考一個問題,將分頁、DAOAJAX操作封裝成像桌面軟件的組件那樣方便易用,其實已經實現了通用分頁和DAO。關于頁面AJAX并不理想,雖然JQuery有很多插件,但從這兩天的內容來看插件的操作并不理想,有時間我要為此多研究研究。

            明天的內容比較有吸引力!哈哈!


     

    posted @ 2010-02-02 21:33 長城 閱讀(294) | 評論 (0)編輯 收藏

     

             每次學習項目或者新的知識時,都 不能建立宏觀的了解。中午或者晚上需要回來整理一下,才能對所學的知識有個宏觀的了解(框架的了解)。我們現在做的這個項目,似乎一直學習的是新知識,其實并不是。而是Java的高級用法,它讓我感覺到了Java的強悍。


             今日重點通用分頁功能,幾乎每一個像樣些的練習都有分頁功能,它如此重要!今天的分頁功能是通用的,適用于任何WEB應用。基于昨天的兩個工具類,今天新添加了一個HibernateDao 擴展了SimpleHibernateDao。這個DAO除了進行常規的CURD操作,還為我們提供了分頁功能和多條件模糊查詢功能,用起來更方便。

     

             下面是查詢分頁信息操作的時序圖:


             (如有需要代碼的,可以給我留言!)   

     

        項目整體上來說并不難,只要抓住了項目的框架和重點內容。什么才是最難的?自己動手實踐才是最難的。來傳智播客學習已經三個月了,我一直堅持著整理學習日志,想將每天的學習重點都詳細的整理出來,但那根本不現實,因為學習內容太豐富了。我也有動手去實踐那些重點的內容,但效果并不另我滿意。我想我應該拿出更多的時間去實踐,但寫日志占用了我大部分時間!

     

             有失必有得,這都是個人的選擇。我之所以寫日志,是想練習自己對文章框架和知識結構的整理能力。做為一個優秀的程序員,我想這一點是十分重要的。我在這方面得到了一定的提升,別我欣慰。但仍然需要繼續努力!說心里話,我的文章結構還差的很,因為沒有經過細心整理和校驗。

     

             我想我應該靈活的去處理實踐與寫作的時間,當實踐變得重要時就應該拿出大部分時間給實踐。當理論性知識重要時,更應該拿出些時間去寫日志。嗯,就這么做吧!還有一個月20天課程就結束了!

    posted @ 2010-01-31 23:55 長城 閱讀(2058) | 評論 (5)編輯 收藏

         摘要:          東西好多啊,我的編寫進度是跟不上了。把重點日志好好整理一下!以前編寫的練習主要是練習基本功,現今的練習是要是怎么快怎么來。比如分頁功能,以前是靠自己手動一點一點的寫。而如今一個插件搞定,而且功能十分強大。          ...  閱讀全文

    posted @ 2010-01-30 23:11 長城 閱讀(952) | 評論 (0)編輯 收藏

         摘要: 今天是教育辦公系統的第一天,我本以為這個系統是一個全面些,功能強的項目。實際確實如此,功能強大、全面!但我們只需要完成其中的一小部分,核心的部分。其實想想,這么好的一個系統,如果真把它做出來并通過測試,我估計至少需要二個月左右的時間。而我們只有9天的時間,這9天的時間將項目的核心部分學習一下還是相當不錯的。 其實在企業開發中,這種規模的項目是不可以由一個人來完成的。所以從這個角度考慮,我...  閱讀全文

    posted @ 2010-01-30 00:31 長城 閱讀(628) | 評論 (0)編輯 收藏

    僅列出標題
    共8頁: 上一頁 1 2 3 4 5 6 7 8 下一頁 
    主站蜘蛛池模板: 免费国产黄网站在线看| 色婷五月综激情亚洲综合 | 亚洲美女视频一区| a级毛片在线免费| 国产aⅴ无码专区亚洲av| 91精品全国免费观看青青| 国产精品亚洲玖玖玖在线观看 | 国产精品亚洲产品一区二区三区 | 亚洲欧洲国产经精品香蕉网| 久久国产乱子伦精品免费不卡| 国产成人精品日本亚洲| 日韩电影免费在线观看| 久久亚洲私人国产精品vA| 最近免费中文字幕高清大全| 亚洲黄色免费观看| 手机在线看永久av片免费| 久久久久久久岛国免费播放 | 1000部拍拍拍18勿入免费视频软件 | 青青操视频在线免费观看| 亚洲va国产va天堂va久久| 一级毛片免费毛片一级毛片免费| 亚洲综合激情另类小说区| 人成午夜免费大片在线观看| 国产成人精品久久亚洲| 久久久久久成人毛片免费看| 国产色在线|亚洲| 亚洲成年人啊啊aa在线观看| 中文字幕免费视频精品一| 亚洲美女一区二区三区| 啦啦啦www免费视频| 国产高潮久久免费观看| 国产青草视频免费观看97| 特级毛片A级毛片100免费播放| 亚洲精品无码成人AAA片| 久视频精品免费观看99| 亚洲一区影音先锋色资源| 最近2019中文字幕mv免费看| 亚洲国色天香视频| 一级毛片直播亚洲| 视频一区二区三区免费观看| 久久精品国产亚洲av成人|