在任何Web項目中跳轉和重定向是必須的,在Servlet中,跳轉的方式(1)能夠經過客戶端跳轉 response.sendRedirect("jspPath") 可是這種跳轉只能傳遞session範圍的屬性,沒法傳遞request範圍屬性,(2)執行服務端跳轉(地址欄不發生變化)必須依靠 RequestDispatcher 接口完成,須要經過forward (後臺)或者include(頁面)來完成跳轉。服務器
在SpringMVC中,Controller中的Action我本身經常使用的有兩種返回值ModelAndView和String。ModelAndView是SpringMVC封裝的一個展現對象和視圖的一個類(註釋中提到的:Represents a model and view returned by a handler, to be resolved by a DispatcherServlet.)
cookie
在返回ModelAndView的時候,經過setViewName(String viewName) 來設置展現須要綁定的jsp頁面。session
若是在處理過程當中,根據業務邏輯的處理過程須要跳轉到其餘Action,也直接調用setViewName(String viewName)便可,可是這時候的viewName是有格式要求的要以 "redirect:" 開頭,如:"redirect:/list"。mvc
返回String就是直接返回的字符串了。更多的時候,這種狀況,返回的Json字符串。這種狀況下是經過 返回相似 "redirect:/list" 這樣的字符串完成跳轉。app
a)能夠直接在地址中進行拼接,可是要注意中文亂碼的狀況jsp
b)還有更加優雅的方法就是經過RedirectAttributes 來設置跳轉參數。spa
參考:.net
http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/code
http://blog.csdn.net/liushengmeng/article/details/7985080orm
Web除了要爲用戶提供須要數據,也須要知足用戶的操做需求和用戶想服務器提供的數據。在Servlet和Jsp中能夠完成數據傳遞的對象有(application、session、request、page)最經常使用的是session、request。Jsp向Servlet發送操做和數據主要經過 Form 表單和Url地址參數(主要方式有POST,GET)。
在SpringMVC中,Action向Jsp中傳遞數據的方式直接 addObject(String attributeName, Object attributeValue) 完成數據數據的傳遞(Jsp能夠經過EL表達式獲取數據),這裏addObject怎麼傳遞到Jsp呢?過後在研究一下
Jsp頁面中操做數據傳遞到Action中,能夠經過路徑/path1/param1這種方式,經過@PathVariable("varName")指定Action中和路徑中對應的參數,也能夠傳遞對象(Spring會自動綁定)頁面Form中的那麼屬性要和對象中的一致,若是是組合對象,須要對被包含對象的屬性進行前綴指定,如 obj1.name
參考:
http://blog.csdn.net/seawaywjd/article/details/7335804
在業務處理過程當中,在操做cookie等不少針對客戶端的操做都須要獲取這兩個對象,在 SpringMVC 中獲取這兩個對象的方法:
a)在Controller範圍添加Resquest和Response屬性經過@ModelAttribute,在每次個Action屬性前設置這兩個對象。
註解說明:
放置在方法的形參上:表示引用Model中的數據
放置在方法上面:表示請求該類的每一個Action前都會首先執行它,也能夠將一些準備數據的操做放置在該方法裏面。
b)添加Controller兩個屬性經過註解@Autowired,讓Spring自動注入
c)經過上下文RequestContextHolder直接獲取
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
HttpServletResponse response = ((ServletWebRequest)RequestContextHolder.getRequestAttributes()).getResponse();
參考:
http://blog.csdn.net/wsh900221/article/details/23428369
<mvc:default-servlet-handler />