【SpringMVC】 forward 和 redirect

  Spring MVC 中,我們在返回邏輯視圖時,框架會通過 viewResolver 來解析得到具體的 View,然後向瀏覽器渲染。假設邏輯視圖名爲 hello,通過配置,我們配置某個 ViewResolver 如下:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
    <description>  
        假如邏輯試圖名爲 "hello",因此 viewResolver 將解析成 /WEB-INF/jsp/hello.jsp  
    </description>  
    <property name="order" value="10" />  
    <property name="prefix" value="/WEB-INF/jsp/" />  
    <property name="suffix" value=".jsp" />  
</bean> 

   實際上,框架還是通過 forward 的方式轉發到了 /WEB-INF/jsp/hello.jsp。如果邏輯視圖名是 /hello,實際還是轉發到了 /WEB-INF/jsp/hello.jsp,即 /WEB-INF/jsp//hello.jsp 等同於 /WEB-INF/jsp/hello.jsp。
  
  現在有個問題,如果 /hello 就是某個 controller 的映射,我想轉發到這個 controller,怎麼辦?我們可以通過forward 前綴來達到轉發到其它資源的目的:

public String handle() {  
    // return "forward:/hello"->轉發到能夠匹配 /hello 的 controller 上  
    // return "hello"-> 實際上還是轉發,只不過是框架會找到該邏輯視圖名對應的 View 並渲染  
    // return "/hello" ->return "hello"  
    return "forward:/hello";  
} 

  同理,如果我們想重定向到某個資源,我們可以通過 redirect 前綴來達到重定向到其它資源的目的:

public String handle() {  
    // 重定向到 /hello 資源  
    return "redirect:/hello";  
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章