若可以屏壁 Java EE,就算只是 Servlet API,基本上有很多人會很開心(也許他們並不清楚為什麼開心),雖然 Web Flux 目的並不在為了取代 Servlet(這野心也太小)。
或許多數人也舉不出 JSP/JSF 的問題在哪,大概只是純 Server Page 越來越不重要的投射居多。
時代已經在前進,除了 servlet 技術外還有別的選擇,像是 spring web flux
web flux 因為沒有依賴 servlet 所以只能和 Freemarker/Thymeleaf 整合。所以跳過 jsp/jsf ,改用這兩個以後切換時會比較有利吧。
是說純 server page 也越來越不重要就是
即使事隔多年還是會遇到中文亂碼的問題 ...
其實主要還是 http header content-type 中的 charset 要設正確,client 端與 server 端統一都用 UTF-8 的話就不會有亂碼問題 ...
倒是最近把《Servlet & JSP 教學手冊》改版並更名為《Servlet & JSP 技術手冊》
剛剛 google 了一下... 看來這本書還沒上市...
把書裏一路用 Servlet/JSP 發展起來的應用程式範例,重構到可以用上 Spring MVC 的最小集合,然後注入元件、逐漸去除 Servlet API、抽出表單物件、改用 Thymeleaf、使用 JdbcTemplate、簡化 Java Mail 等…
Servlet/JSP + 重構 + Spring,這本書未免也太超值!
能夠漸進式移植的話,目標比較明確,這樣瞭解 Spring 比較有意義,我個人是覺得,這些功能拆開來說明的話會很空虛。
這需要 programmer 有時間去了解這個過程... 以及上面老闆的支持...
作者可以做到 篩選 這件事,是因為 Spring 有幾項優點 …
是啊!文件裏有寫…
框架應該要有個最小集合,而這個最小集合,最好可以基於開發者既有的技術背景,在略為重構(原型)應用程式,以使用此最小集合後,就能使應用程式運行起來,之後隨著對框架認識的越多,在判定框架中的特定功能是否適用,之後,再逐步重構應用程式能使用該功能。
目前沒有,倒是最近把《Servlet & JSP 教學手冊》改版並更名為《Servlet & JSP 技術手冊》,最後用上了 Spring 5,基本上就是我這篇文章的過程實現,把書裏一路用 Servlet/JSP 發展起來的應用程式範例,重構到可以用上 Spring MVC 的最小集合,然後注入元件、逐漸去除 Servlet API、抽出表單物件、改用 Thymeleaf、使用 JdbcTemplate、簡化 Java Mail 等…
能夠漸進式移植的話,目標比較明確,這樣瞭解 Spring 比較有意義,我個人是覺得,這些功能拆開來說明的話會很空虛。
姑且當成 Spring 技術手冊借殼還魂吧!…XD
作者可以做到 篩選 這件事,是因為 Spring 有幾項優點
API 成熟穩定。即使現在已經 spring 4/5 了,還是可以用 2.x 版的方法去改寫,2.x 版到 5.0 中間隔了十年啊!
可以漸進式的移植。原本 servlet 的寫法,改成 spring controller 的皮後,大部份的舊程式還能動,你不用一次全部改完,可以分好幾個批次做。
spring 是個高度模組化的 framework,你可以只用他的 mvc 就好了,其他都可以放著先不管。也因為如此,你才有機會 篩選,只導入一部份你想要的功能
不是什麼 framework 都能這樣玩,例如 Angular 就沒有上述的任何優點。想導入嗎?那就全部重寫吧
在工作也暫時用不上的情況下,被我暫時放生的框架之一是Spring,在Spring 2.0 之後就不常接觸。過了多年,現在5.0都出了,雖然大致知道主打的特點是什麼,但並未去玩弄過細節。
我也是在 Spring 2.0 之後就不常接觸了,直到最近的案子有機會用到 Spring 4.x。
Spring 4.x 可以用 @Controller
、@Service
、@Respository
等 annotation 真的蠻方便的,不用 extend 或 implement 就可以讓類別擔任各自的角色。
不過就是有些細節不太了解,像是 @Controller
的 method 若使用 ModelAndView 取值會是 null,但用 @ModelAttribute
卻取得到值。
另外,不知 Caterpillar 是否有出 Spring 5.x 技術手冊的打算? XD
忽然想到這是 java 最後一次加上 string interpolation 的機會了
因為不管你挑什麼符號做為 interpolation 的 prefix, 現有的 java 程式一定都有人用過了, 25年啊
raw string literal 這功能上線的當下, 如果沒有先做完 interpolation, 之後想再加就會 break change...
做不完的話好歹也先留個 keyword 給之後用 (比方說用 $
字號一定要 escape), 就跟 _
底線先保留給未來的 lambda 用一樣