購物網(wǎng)站用html怎么做怎么樣做一個自己的網(wǎng)站
下面用的過濾器都是注解方式
可以使用非注解方式,就是去web.xml配置映射關(guān)系
上面程序的執(zhí)行輸出是
再加一個過濾器
下面來看一段程序
輸出結(jié)果
和過濾器是否非常相識
但是上面這段程序存在的問題:在編譯階段已經(jīng)完全確定了調(diào)用關(guān)系,如果你想改變他們的調(diào)用順序或者繼續(xù)添加一個方法(好比過濾器),就必須修改java源代碼.
而java修改源代碼需要重新編譯,項目需要重新測試,重新發(fā)布.增添了繁瑣麻煩且容易出錯的過程
違背了:開閉原則--->對擴(kuò)展開發(fā),對修改關(guān)閉
簡單說就是對項目擴(kuò)展我沒有意見,但是你擴(kuò)展的過程中修改了原來的代碼.這就不對了.
要達(dá)到的效果是,可以擴(kuò)展,但是別改代碼
而過濾器的先后順序,是可以隨時改變的,在servlet中可以通過web.xml的過濾器隱射順序,或者
在SpringBoot中@Order注解等(注解其實還是要改代碼,不推薦)方式,動態(tài)改變執(zhí)行順序
既:編譯階段并沒有確定調(diào)用順序,而是運(yùn)行階段動態(tài)組合而成的.
這種那么這種設(shè)計模式被稱為責(zé)任鏈設(shè)計模式
責(zé)任鏈設(shè)計模式最大核心思想:在程序運(yùn)行階段,動態(tài)的組合程序的調(diào)用順序.