天天看點

SpringMVC源碼解析WebContentGenerator

便捷的為任何類型的網頁内容産生的父類,像

AbstractController

WebContentInterceptor

也可用于自定義處理器HandlerAdapter 。

支援HTTP緩存控制選項。 對應的HTTP頭的使用可以通過控制"cacheSeconds"和"cacheControl"屬性。

注:Spring4.2的作為,使用隻有當這種的預設行為改變setCacheSeconds ,發送HTTP響應頭是符合目前的浏覽器和代理伺服器實作(即沒有HTTP 1.0頭了)恢複到以前的行為可以很容易地通過使用完成新近棄用的方法之一setUseExpiresHeader , setUseCacheControlHeader , setUseCacheControlNoStore或setAlwaysMustRevalidate 。

WebContentGenerator作為web内容生成器的超類,可以自定義處理器(handler),提供了浏覽器緩存控制,是否由session的必須開啟

浏覽器的請求方式(GET、HEAD、POST等),同時緩存的控制還提供了對HTTP1.0和HTTP1.1的支援。 WebContentGenerator 中的

supportedMethods、requireSession、useExpiresHeader、useCacheControlHeader、useCacheControlNoStore、cacheSeconds、

alwaysMustRevalidate都是可以在xml的bean中進行配置。

後面可配置的屬性,分析它們的主要作用:

supportedMethods:設定支援的請求方式,預設是上面的三種,如果是其他的請求方式,可以通過bean注入加入集合

requireSession :判斷浏覽器是否必須含有session,如果設定為true必須,浏覽器沒有session則會報錯(HttpSessionRequiredException異常)

useExpiresHeader:是否使用HTTP1.0協定緩存控制響應頭, 配合cacheSeconds使用。 為true添加"Expires"響應頭,本地副本緩存過期時間

useCacheControlHeader :是否使用HTTP1.1協定緩存控制響應頭,配合cacheSeconds使用

useCacheControlNoStore :是否使用HTTP1.1協定緩存控制響應頭,配合cacheSeconds使用

cacheSeconds :緩存過期時間,正數表示需要緩存,負數表示不做任何事情

alwaysMustRevalidate :處理器實作LastModified接口,伺服器會添加“Last-Modified”響應頭,表示伺服器最後修改的時間。