Spring+JSP頁面傳遞值的筆記

平常都在用Spring+REST api的設計,在參數的傳遞也習慣用JSON,突然間最基本的Spring+Servlet+JSP的寫法反而忘記,趕緊來筆記一下。

✦ Controller裡面的 HttpServletRequest request:

request.getParameter() 一般是指Client透過URL Query傳值到Server。一般只能傳送String。

https://www.ajoshow.com/servlet?parameter=1

request.getAttribute() 一般用於Server端取值,例如從Servlet設值,JSP取值,可以傳遞的值不限於String,也可以是物件。

顯示完整資訊

Java 9 Modularity 關鍵字整理

模組這件事其實不是甚麼新鮮的技術了,早在JavaScript, Python等等語言就有了,而Java也終於在JDK9.0釋出了Modularity。在模組出來以前,Java的封裝一直是很頭疼的問題,基本上都是包裝成jar檔,裡面有package,package裏頭的修飾詞有public、default、protected、private。

Modifier  Class Package Subclass  World
public  Y  Y Y Y
protected  Y  Y Y N
default (no modifier)  Y  Y N N
private  Y N N N

這樣的封裝有一個很大的問題。如果我有一個類別A,它被放置com.my.package,而我又有一個類別B,它被放置在com.my.package.inner,A可以被其他package存取,但B是非公開的,同時A也要可以存取B的內容。這時會發現B的修飾詞不知道該放甚麼了,因為唯一可以被自己以外的package讀到的修飾詞就只有public,而本來用意只是想給com.my.package使用的B,現在變成所有人都可以讀取了,這並不是我們一開始想要的結果。

顯示完整資訊

Spring Boot Thymeleaf 多個Template Resolver設定

Spring Boot 內建其實就已經有Thymeleaf,基本上到application properties就可以設定了。但Spring Boot一開始的設定是給view template使用的,如果今天想要email也使用thymeleaf來產template,但想要用純文字檔呢?從spring.thymeleaf.mode看起來很像是無法讓我同時填HTML、TEXT,很像只能吃一種templateResolver。如果想要有多個templateResolver,除了爬文去找Spring Boot有沒有Interceptor或Configuration支援這樣子的設定,最快的方法就是乾脆不要用Spring Boot內建的Thymeleaf設定,改由自己設定比較快。

顯示完整資訊

OCPJP 8 (1Z0-813)考試心得

2017年的目標之一就是把自己的OCPJP這張證照從Java6升到Java8,也就是通過1Z0-813這個考試來升級。也趁機會把考證照當個目標,讓自己更有系統性地去學習Java8。比起當時Beta版的考試,1Z0-813相對簡單許多,但即使簡單,還是有很多細微的陷阱題需要去注意。

其實準備這張證照沒甚麼太大訣竅,平常在工作時就先都用Java 8 style去寫,遇到不會不要妥協用舊的語法帶過,而舊的語法有機會也可以用新語法重構,簡單講就是多寫,不會就查。確定考試範圍,例如Steam API, Optional API, Collection API, Lambda, Date…這些新的語言特性是不是都玩過摸過了。在考試前一個月,可以上網去找一些模擬試題來練習,遇到不熟的API一定要自己在寫過一次,記憶會比較深刻。

最後,這邊附上自己的一些練習,有興趣的可以自己玩玩:傳送門

CSS字型大小 em, pt, px, rem 筆記

1em = 100% = 12pt = 16px

px 為像素,通常遊覽器預設尺寸為16px,也為100%

% 百分比符號,已預設尺寸做百分比如 75% = 12px

pt 通常用於列印,相當於1/72inch,或是1.333px

em 是相對的的數值單位,它會受到外圍的文字大小所影響,而 1em 即是 1 的文字大小, 1.5em 也就是 1.5 倍的文字大小。如外圍父層字型大小為20px,本階層為1.5em,則本階層的字型大小換算為 20 * 1.5 = 30px。

rem 也是相對的文字尺寸,和 em 使用方法接近,不同的是他僅相對於 root 層級的文字大小(網頁中的 html)。如上述例子,外層大小並不會影響本階層,唯一會影響的只有html裡面的文字大小,故 1.5rem 會得到 16 * 1.5 = 24px。

 

Docker 容器和映像檔介紹

當想要執行一個docker容器,會執行docker run image-name。這個指令會先從本地尋找是否有這個容器的Image(想像Image就是容器的snapshot),如果沒有就會去repository看有沒有對應的image名稱可以pull下來。

docker image可以從Docker Hub找到。例子:如果今天要下載一個mongo的docker,先去這裏找到有關mongo容器的相關資訊,並輸入下列指令:

顯示完整資訊