SpringMVC 學習筆記

一、跳轉、重定向

  在任何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

1.一、ModelAndView

  在返回ModelAndView的時候,經過setViewName(String viewName) 來設置展現須要綁定的jsp頁面。session

  若是在處理過程當中,根據業務邏輯的處理過程須要跳轉到其餘Action,也直接調用setViewName(String viewName)便可,可是這時候的viewName是有格式要求的要以 "redirect:" 開頭,如:"redirect:/list"。mvc

1.二、String

  返回String就是直接返回的字符串了。更多的時候,這種狀況,返回的Json字符串。這種狀況下是經過 返回相似 "redirect:/list" 這樣的字符串完成跳轉。app

1.三、在跳轉過程當中的參數

  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、sessionrequest、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

三、在開發過程當中獲取Request和Response

  在業務處理過程當中,在操做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

四、SpringMVC 靜態資源的訪問能夠經過配置

<mvc:default-servlet-handler />

相關文章
相關標籤/搜索