問題 有時候我們會透過網頁後端程式直接輸出檔案,因此需要在HTTP Response Header裡面添加Content […]
解決HTTP Header Content-Disposition檔案名稱不能輸入中文、日文、韓文等Unicode字元
Spring Data JPA與Hibernate報錯failed to lazily initialize a collection
在Java使用Spring或是Hibernate時,使用OneToMany、ManyToMany來標注Entity Class非常方便,可以輕鬆處理外來鍵與外來資料表的問題。但偶爾使用getXXX()方法要讀取外來資料表的時候,可能會遇到Hibernate報錯說「org.hibernate.LazyInitializationException: failed to lazily initialize a collection」,本篇文章將解析為什麼會發生這種問題,以及要怎麼解決它。
使用Java擷取檔案副檔名、判斷檔案類型(不用第三方套件)
本篇教學文章示範如何使用Java不透過第三方套件來判斷檔案的副檔名,以及檔案類型,只需要Java 7的NIO就可以達成,再加上Java 8的Optional與Stream API來更優雅的處理。使用原生的API可以避免一些問題,例如執行時還需要第三方套件、第三方套件還包含太多用不上的API徒增檔案大小、第三方套件不更新可能有漏洞等麻煩。
使用Spring Data JPA建立公版的DAO、Repository樣板
Spring Data JPA是一個非常方便的資料庫Connection與Mapping的框架,它可以幫你建立資料表、添加資料表的欄位、維護連接池、將Java物件轉換為Table資料。有時候我們會希望自己建立一個我們的公版interface,讓他繼承某一個Repository再添加一些方法,然後之後的DAO interface再繼承我們的公版interface,可以簡化更多程式碼。
使用Java與JavaScript在前後端檢查密碼強度
跟帳號有關的系統,不管是網頁、手機App、或是單機桌面應用程式都可能遇上密碼,有些簡單點的會限制使用者的密碼文字長度要多長,複雜一點的還會限制密碼至少要包含某些內容,已達到足夠的複雜強度。本文提供Java、JavaScript與TypeScript的範例,提供檢測密碼是否符合強度的程式碼。
整合Spring Boot、Nginx反向代理、Linux Systemd系統服務
我常用的一個場景是一台Linux底下有多個Spring Application,可以透過Linux system daemon控制他們,然後使用Nginx的反向代理產生唯一對外窗口,讓外界透過Nginx與Spring Application溝通。
指定Spring Boot執行環境的多種方式
Spring Framework是Java中的好框架,Spring Boot又讓方便度更上一層樓,只需要簡單的一點設定就可以開始使用。但同一個專案在不同環境有不同的變數與設定值。因此可以建立多個設定檔,常見的會有開發版本、測試版本、生產版本等,在此介紹指定環境的幾種方式。
實測Spring Boot中多個Properties設定的覆蓋順序
在Spring Framework的設定參數可以依照環境區分成多個版本,這篇文章介紹Spring Boot有哪些設定的方式,以及他們之間覆蓋彼此的順序。本篇文章以修改內建伺服器的Port為例示範。
Java EE(Jakarta EE)的Servlet/JSP的網址結構
Servlet與JSP是Java早期的網頁技術,由於許多方便的新技術、新框架崛起,現在通常不會直接使用Servlet。但其實Servlet還是留在Java中,就算是使用Spring MVC等框架,依然會見到一些蹤跡。此處介紹透過HttpServletRequest獲取當前網址的結構。