struts2 在web容器中表現為一個過濾器, 最近想到最後的視圖資源怎麼返回的,查了很多資料
都說filter不能直接響應只能修改響應,那麼struts2最後response.sendredirect()或者轉發什麼的在什麼地方呢?
還是說 filter配合servlet用的時候"標准"用法是修改,但其實是可以直接響應(因為它確實有ServletResponse這個參數...)而struts2沒有按照“標准”來???求大神指點
單從理解上講(事實比這復雜),你可以把struts2分為兩個部分,一個是他的filter,一個是封裝的servlet,前端的請求會首先被filter攔截,主要有這麼幾件事(幫你封裝數據、校驗數據、控制請求跳轉),控制請求跳轉可這樣理解:默認的filter肯定是不會攔截你的請求,他只會幫你封裝,然後放行;如果是你自己寫的filter,可能會因為數據不合法或者其他原因直接拒絕掉,從而同意的轉向你配置的界面,如果合法,你的filter肯定也是會放行的。當所有的filter都放心以後進入action,其實就是已經封裝好的servlet,這其中本身就有request和response,之前怎麼做現在還可以怎麼做,一般的返回都是返回String,通過你的配置文件找到相應的jsp,還是通過底層將jsp翻譯為servlet轉發給浏覽器的。