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

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

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

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

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

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

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

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

          posted @ 2010-02-08 00:30 長城 閱讀(384) | 評論 (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 長城 閱讀(407) | 評論 (0)編輯 收藏

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

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

           

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

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


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

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


           

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

           

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


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

           

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


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

           

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

           

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

           

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

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

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

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

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

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

          僅列出標題
          共8頁: 上一頁 1 2 3 4 5 6 7 8 下一頁 
          主站蜘蛛池模板: 台中县| 亚东县| 博罗县| 辽阳县| 霍山县| 工布江达县| 九江市| 册亨县| 台东县| 达拉特旗| 双江| 大港区| 东辽县| 宜章县| 信宜市| 卫辉市| 田阳县| 上犹县| 彩票| 定襄县| 柞水县| 勐海县| 荆州市| 晋城| 乐都县| 马鞍山市| 交口县| 江口县| 大庆市| 永仁县| 辽宁省| 南雄市| 西乌珠穆沁旗| 平顺县| 长泰县| 名山县| 仲巴县| 太原市| 海宁市| 常熟市| 蚌埠市|