目錄
SpringMVC
SpringMVC概述
1、添加依賴
2、在web.xml中配置前端控制器
3、編寫SpringMVC的配置檔案(結構和Spring配置檔案一緻)
4、添加Controller
5、通過浏覽器通路Controller
SpringMVC的工作機制
DispatcherServlet
Controller的實作
ModelAndView類
視圖解析器概述
請求映射
1、RequestMapping可以聲明在類和方法上
2、可以根據不同的請求方式來控制哪種請求可以通路
3、在RequestMapping中添加params
4、在RequestMapping中添加Headers
5、在RequestMapping中添加占位符
控制器方法入參
1、基本資料類型的自動轉化
2、自動封裝資料
時間類型參數
使用ServletAPI
SpringMVC資料校驗
2、定義校驗規則
3、對需要校驗的資料添加注解 @Validated
4、在SpringMVC中注冊校驗器
SpringMVC內建JSON
2、在方法上添加注解@ResponseBody
postMan工具的使用
RESTful
RESTful概念特點
RESTful資源設計規則
處理靜态資源
1)采用
2)采用
SpringMVC攔截器
1、編寫一個攔截器
2、配置攔截器
SpringMVC檔案上傳
1、表單
2、添加依賴
3、上傳的操作
4、上傳解析器
SpringMVC異常處理
1、編寫異常處理類
2、編寫異常展示頁面
3、編寫Controller生成異常
說明下【本文是在網上聽課做的筆記,代碼是自己敲的,有些文字是複制的老師發的】
使用SpringMVC替換Servlet
Servlet的問題:
1、需要判斷調用哪個方法。(邏輯需要自己編寫)
2、需要獲得request的資料,并且需要手動封裝,還要進行類型轉換。
3、跳轉和轉發資料的代碼太繁瑣。
4、通過ajax請求的對象,需要通過fastjson進行轉換,并使用相應對象的輸出流寫出。
以上問題SpringMVC都給出了解決方案。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iaaxEV582LcNjMvwVMx8CXxIDMy8CXt92YugXM4FmLzo3Lc9CX6MHc0RHaiojIsJye.png)
使用注解配置Controller
<code>相關的jsp頁面</code>
<code>list.jsp</code>
<code>list2.jsp</code>
jstl需要導入的依賴
将Controller的傳回值進行解析,到浏覽器。
在SpringMVC中也有很多視圖解析器
這時通過視圖解析器解析handler傳回的值(邏輯視圖,轉發資料)
編寫一個視圖
RequestMapping
可以聲明在類上,如果要通路方法,需要将類的RequestMapping的值與方法上的RequestMapping的值組合通路。
http://localhost:8080/項目名稱/類上注解/方法上注解
為了防止直接通過浏覽器通路jsp頁面,将所有頁面放到WEB-INF下。隻能通過控制器跳轉。在視圖解析器中的字首添加WEB-INF。
浏覽器位址欄通路 都是Get請求
相應的配置檔案
相關内容
SpringMVC中預設識别日期格式為yyyy/MM/dd
其他格式需要自己編寫轉換類
将轉換類配置到SpringMVC架構中
Controller裡面的代碼
HttpServletRequest
HttpServletResponse
HttpSession
ServletContext
HttpServletRequest,HttpServletResponse,HttpSession對象都可以從方法參數中擷取
正規表達式
電話号碼格式
郵箱格式
身份證格式等等
前端資料校驗 (可以減輕伺服器壓力)
後端資料校驗
在封裝類上定義校驗規則,JSR303
将對象或者集合轉換成json
要求頁面傳遞資料格式為json data:JSON.stringify(jsonStr) 在Controller方法上添加注解@RequestBody public String save(@RequestBody User user) 因為預設按照鍵值對解析資料 contentType:"application/json"
<code>可以使用POSTMAN進行測試</code>
<code>f.jsp</code>
REST(英文:Representational State Transfer,簡稱REST)
表述性狀态轉移; 表現狀态傳輸;
描述了一個架構樣式的網絡系統,比如 web 應用程式。它首次出現在 2000 年 Roy Fielding 的博士論文中,Roy Fielding是 HTTP 規範的主要編寫者之一。
在目前主流的三種Web服務互動方案中,REST相比于SOAP(Simple Object Access protocol,簡單對象通路協定)以及XML-RPC更加簡單明了,無論是對URL的處理還是對Payload的編碼,REST都傾向于用更加簡單輕量的方法設計和實作。值得注意的是REST并沒有一個明确的标準,而更像是一種設計的風格。
RESTFUL特點包括:
1、每一個URI代表1種資源;
2、用戶端使用GET、POST、PUT、DELETE4個表示操作方式的動詞對服務端資源進行操作:GET用來擷取資源,POST用來建立資源(也可以用于更新資源),PUT用來更新資源,DELETE用來删除資源;
3、通過操作資源的表現形式來操作資源;
4、資源的表現形式是XML或者HTML;
5、用戶端與服務端之間的互動在請求之間是無狀态的,從用戶端到服務端的每個請求都必須包含了解請求所必需的資訊。
URI
URI 表示資源,資源一般對應伺服器端領域模型中的實體類。
URI規範
不用大寫;
用中杠-不用下杠_;
參數清單要encode;
URI中的名詞表示資源集合,使用複數形式。
資源集合 vs 單個資源
URI表示資源的兩種方式:資源集合、單個資源。
資源集合:
/zoos //所有動物園
/zoos/1/animals //id為1的動物園中的所有動物
單個資源:
/zoos/1 //id為1的動物園
/zoos/1;2;3 //id為1,2,3的動物園
避免層級過深的URI
/在url中表達層級,用于按實體關聯關系進行對象導航,一般根據id導航。
過深的導航容易導緻url膨脹,不易維護,如 GET /zoos/1/areas/3/animals/4,盡量使用查詢參數代替路徑中的實體導航,如GET /animals?zoo=1&area=3;
對Composite資源的通路
伺服器端的組合實體必須在uri中通過父實體的id導航通路。
組合實體不是first-class的實體,它的生命周期完全依賴父實體,無法獨立存在,在實作上通常是對資料庫表中某些列的抽象,不直接對應表,也無id。一個常見的例子是 User — Address,Address是對User表中zipCode/country/city三個字段的簡單抽象,無法獨立于User存在。必須通過User索引到Address:GET /user/1/addresses
Request
HTTP方法
通過标準HTTP方法對資源CRUD:
GET:查詢
GET /zoos
GET /zoos/1
GET /zoos/1/employees
POST:建立單個資源。POST一般向“資源集合”型uri發起
POST /animals //新增動物
POST /zoos/1/employees //為id為1的動物園雇傭員工
PUT:更新單個資源(全量),用戶端提供完整的更新後的資源。與之對應的是 PATCH,PATCH 負責部分更新,用戶端提供要更新的那些字段。PUT/PATCH一般向“單個資源”型uri發起
PUT /animals/1
PUT /zoos/1
DELETE:删除
DELETE /zoos/1/employees/2
DELETE /zoos/1/employees/2;4;5
DELETE /zoos/1/animals //删除id為1的動物園内的所有動物
<code>Controller.java</code>
<code>g.jsp</code>
<code>web.xml</code>
要在web.xml中添加過濾器
小技巧:@RequestMapping 可以替換 (get post put update delete)
技巧:
@Controller 替換成 @RestController 可以直接傳回 JSON資料
在springMVC-servlet.xml中配置<mvc:default-servlet-handler />後,會在Spring MVC上下文中定義一個org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它會像一個檢查員,對進入DispatcherServlet的URL進行篩查,如果發現是靜态資源的請求,就将該請求轉由Web應用伺服器預設的Servlet處理,如果不是靜态資源的請求,才由DispatcherServlet繼續處理。
一般Web應用伺服器預設的Servlet名稱是"default",是以DefaultServletHttpRequestHandler可以找到它。如果你所有的Web應用伺服器的預設Servlet名稱不是"default",則需要通過default-servlet-name屬性顯示指定:
<mvc:default-servlet-handler default-servlet-name="所使用的Web伺服器預設使用的Servlet名稱" />
<mvc:default-servlet-handler />将靜态資源的處理經由Spring MVC架構交回Web應用伺服器處理。而<mvc:resources />更進一步,由Spring MVC架構自己處理靜态資源,并添加一些有用的附加值功能。
首先,<mvc:resources />允許靜态資源放在任何地方,如WEB-INF目錄下、類路徑下等,你甚至可以将JavaScript等靜态檔案打到JAR包中。通過location屬性指定靜态資源的位置,由于location屬性是Resources類型,是以可以使用諸如"classpath:"等的資源字首指定資源位置。傳統Web容器的靜态資源隻能放在Web容器的根路徑下,<mvc:resources />完全打破了這個限制。
其次,<mvc:resources />依據目前著名的Page Speed、YSlow等浏覽器優化原則對靜态資源提供優化。你可以通過cacheSeconds屬性指定靜态資源在浏覽器端的緩存時間,一般可将該時間設定為一年,以充分利用浏覽器端的緩存。在輸出靜态資源時,會根據配置設定好響應封包頭的Expires 和 Cache-Control值。
在接收到靜态資源的擷取請求時,會檢查請求頭的Last-Modified值,如果靜态資源沒有發生變化,則直接傳回303相應狀态碼,提示用戶端使用浏覽器緩存的資料,而非将靜态資源的内容輸出到用戶端,以充分節省帶寬,提高程式性能。
<code>controller.java</code>
本文來自部落格園,作者:chn-tiancx,轉載請注明原文連結:https://www.cnblogs.com/tiancx/p/15663082.html