2015年9月9日 星期三

2015年8月4日 星期二

[Azure] Java應用程式 強制HTTP轉為HTTPS連線

最近佈署在Azure Java 應用程式的網站,以iframe方式被嵌在客戶網站中,由於客戶網站連線為https,iframe的網站連線也必需是https,否則瀏覽器會封鎖連線。

Enable HTTPS for a web app in Azure App Service中提到,Azure Java 應用程式可以直接將連線由http改為https即可,只是安全性不如使用自訂網域及自己的憑證那麼安全。

由於https與http皆可連線,那有沒有辦法強制把http連線自動轉換成https呢?

[Regex] 使用Regular Expression 驗證非數字或字母

原本想用Apache Common Lang的StringUtils.isAplanumeric(),來驗證非數字或字母,但是字串有中文卻回傳true

2015年7月24日 星期五

[Spring] ApplicationContext 與 WebApplicationContext的差異

  • ApplicationContext
applicationContext.xml檔是每個web應用程的root context設定。Spring會載入此檔案並為整個應用程式建立ApplicationContext。一個web應用程式,只會有一個ApplicationContext。

如果你沒有在web.xml檔中,使用contextConfigLocation參數指定context設定檔的話,Spring會在應用程式啟動時,至WEB-INF目錄中尋找applicationContext.xml檔,找不到時則會丟出FileNotFoundException 例外。

在Spring的BeanFactory生命週期裡,ApplicationContext會偵測並呼叫所有有實作ApplicationContextAware的bean。

  • WebApplicationContext
與ApplicationContext不同,一個web應用程式可以有多個WebApplicationContext。

簡單來說,1個DispatcherServlet擁有1個對應的WebApplicationContxt;每個DispatcherServlet有自己的xxx-servlet.xml設定檔;單個web應用程式是在web.xml檔裡,設定多個DispatcherServlet來負責處理reqeust。

Spring預設會載入WEB-INF目錄下的“xxx-servlet.xml”檔,xxx為在web.xml中的servlet名稱,你亦可在web.xml中使用contextConfigLocation參數,來改變xml檔的檔名或路徑。

WebApplicationContext 的實作會偵測所有有實作ServletContextAware界面的bean,並呼叫其setServletContext方法。


Spring ContextLoaderListener And DispatcherServlet Concepts這篇文章有實際的ApplicationContext設定舉例說明,及更詳盡的Spring web應用程式啟動的運作介紹,有興趣的話,可以參考。

參考文章:
1) http://stackoverflow.com/a/29629824
2) Interface ApplicationContext
3) Interface WebApplicationContext

2015年7月18日 星期六

[Junit] exception java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing

之前使用junit-4.12.jar,只用了自訂test開頭的method,及@FixMethodOrder(MethodSorters.NAME_ASCENDING)的annotation,沒有出現任何例外,直到用了annotation @RunWith,卻發生java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing錯誤

[Eclipse] User Library 設定的儲存位置與匯入匯出

在當前workspace下寫程式,如何不切換workspace,來取得另一workspace的user library設定呢?

2015年6月17日 星期三

[Struts] 集中管理回應訊息!使用訊息資源檔 Messsage Resource Files

最近在寫api,錯誤訊息的回應尚未最終定案,寫死在程式碼中徒增修改麻煩,這時可使用struts2的訊息資源檔 Message Resource Files,統一集中管理api的回應訊息

2015年5月22日 星期五

[Notepad++] 利用 Open File In Solution 加速開啟常用檔案

我常使用Notepad++撰寫每天的工作紀錄,或是不同技術的know-how文件(小技巧或是問題解法),在開發過程中,若遇到曾碰過的問題時,就會想要快速開啟某個know-how文件來參考

在Eclipse中可使用快捷鍵Ctrl+Shift+R來尋找多個開啟專案中的任何檔案(參考這裡),且視窗會濾出符合你關鍵字的所有檔案,大幅降低去資料夾中翻找的時間

Notepad++裡沒有內建這樣方便的功能,但是可以靠以下三個plugin,加上自訂快捷鍵來辦到

[Notepad++] 如何取消與自訂快捷鍵

假設我想使用Ctrl+Shift+R,來開啟Open File In Solution外掛的OFIS - Show功能(一般其他功能也可以),但此快速鍵被Notepad++預設為錄製巨集的快速鍵,我們必需先取消此設定,再重新將此快速鍵組合指定至新外掛的功能

2015年5月5日 星期二

[Eclipse] Java工程師加速開發的十大快速鍵

在Eclipse中,能夠快速切換至想找的類別、定義、method等,也能加快寫code的速度,分享我認為最需要的10個快速鍵,供大家參考