SpringMVC框架 第7章 綜合案例RESTRUL_CRUD

7?綜合案例RESTRUL_CRUD

7.1 RESTRUL_CRUD_需求

7.1.1 顯示所有員工信息

? 1)? URI:emps

? 2)? 請求方式:GET

? 3)? 顯示效果

7.1.2 添加操作-去往添加頁面

? 1)? 顯示添加頁面:

? 2)? URI:emp

? 3)? 請求方式:GET

? 4)? 顯示效果

7.1.3 添加操作-添加員工

? 1)? 添加員工信息:

? 2)? URI:emp

? 3)? 請求方式:POST

? 4)? 顯示效果:完成添加,重定向到 list 頁面。

7.1.4 刪除操作

? 1)? URL:emp/{id}

? 2)? 請求方式:DELETE

? 3)? 刪除后效果:對應(yīng)記錄從數(shù)據(jù)表中刪除

7.1.5 修改操作-去往修改頁面

? 1)? URI:emp/{id}

? 2)? 請求方式:GET

? 3)? 顯示效果:回顯表單

7.1.6 修改操作-修改員工

? 1)? URI:emp

? 2)? 請求方式:PUT

? 3)? 顯示效果:完成修改,重定向到 list 頁面。

7.1.7 相關(guān)的類

省略了Service層,為了教學(xué)方便

? 1)? 實體類:Employee、Department

? 2)? Handler:EmployeeHandler

? 3)? Dao:EmployeeDao、DepartmentDao

7.1.8 相關(guān)的頁面

? 1) list. jsp

? 2) input. jsp

? 3)edit.? jsp

7.2 搭建開發(fā)環(huán)境

? 1)? 拷貝jar包

? 5)? 創(chuàng)建相關(guān)頁面

/WEB-INF/views/list.jsp

index.jsp

? 6)? 增加實體類? 7)? 增加DAO類

7.3 RESTRUL_CRUD_顯示所有員工信息

7.4 RESTRUL_CRUD_添加操作

7.5 使用Spring的表單標(biāo)簽

? 1)? 通過 SpringMVC 的表單標(biāo)簽可以實現(xiàn)將模型數(shù)據(jù)中的屬性和 HTML 表單元素相綁定,以實現(xiàn)表單數(shù)據(jù)更便捷編輯和表單值的回顯?

? 2)? form 標(biāo)簽

  • 一般情況下,通過 GET 請求獲取表單頁面,而通過 POST 請求提交表單頁面,因此獲取表單頁面和提交表單頁面的 URL 是相同的。
  • 只要滿足該最佳條件的契約,<form:form> 標(biāo)簽就無需通過 action 屬性指定表單提交的 URL
  • 可以通過 modelAttribute屬性指定綁定的模型屬性,若沒有指定該屬性,則默認(rèn)從 request 域?qū)ο笾凶x取 command?的表單 bean,如果該屬性值也不存在,則會發(fā)生錯誤。

? 3)? SpringMVC 提供了多個表單組件標(biāo)簽,如 <form:input/>、<form:select/> 等,用以綁定表單字段的屬性值,它們的共有屬性如下:

  • path表單字段,對應(yīng) html 元素的 name 屬性,支持級聯(lián)屬性
  • htmlEscape:是否對表單值的 HTML 特殊字符進(jìn)行轉(zhuǎn)換,默認(rèn)值為 true
  • cssClass:表單組件對應(yīng)的 CSS 樣式類名
  • cssErrorClass:表單組件的數(shù)據(jù)存在錯誤時,采取的 CSS 樣式

? 4)? form:input、form:password、form:hidden、form:textarea:對應(yīng) HTML 表單的 text、password、hidden、textarea 標(biāo)簽

? 5)? form:radiobutton:單選框組件標(biāo)簽,當(dāng)表單 bean 對應(yīng)的屬性值和 value 值相等時,單選框被選中??

? 6)? form:radiobuttons:單選框組標(biāo)簽,用于構(gòu)造多個單選框

  • items:可以是一個 List、String[] 或 Map
  • itemValue:指定 radio 的 value 值??梢允羌现?bean 的一個屬性值
  • itemLabel:指定 radio 的 label 值
  • delimiter:多個單選框可以通過 delimiter 指定分隔符

? 7)? form:checkbox:復(fù)選框組件。用于構(gòu)造單個復(fù)選框

? 8)? form:checkboxs:用于構(gòu)造多個復(fù)選框。使用方式同 form:radiobuttons 標(biāo)簽

? 9)? form:select:用于構(gòu)造下拉框組件。使用方式同 form:radiobuttons 標(biāo)簽

? 10)? form:option:下拉框選項組件標(biāo)簽。使用方式同 form:radiobuttons 標(biāo)簽

? 11)? form:errors:顯示表單組件或數(shù)據(jù)校驗所對應(yīng)的錯誤

  • <form:errors path= “*” /> :顯示表單所有的錯誤
  • <form:errors path= “user*” /> :顯示所有以 user 為前綴的屬性對應(yīng)的錯誤
  • <form:errors path= “username”/> :顯示特定表單對象屬性的錯誤

    ?

7.6 添加員工實驗代碼?

? 1)? 表單

? 2)? 控制器方法

7.7 RESTRUL_CRUD_刪除操作&處理靜態(tài)資源

7.7.1 刪除實驗代碼

7.7.2 HiddenHttpMethodFilter過濾器

發(fā)起請求,無法執(zhí)行,因為delete請求必須通過post請求轉(zhuǎn)換為delete請求,借助:HiddenHttpMethodFilter過濾器

7.7.3 需要使用jQuery來轉(zhuǎn)換請求方式

? 1)? 加入jQuery庫文件

/scripts/jquery-1.9.1.min.js

? 2)? jQuery庫文件不起作用? 3)? 解決辦法,SpringMVC 處理靜態(tài)資源

  • 為什么會有這樣的問題:

優(yōu)雅的 REST 風(fēng)格的資源URL 不希望帶 .html 或 .do 等后綴,若將 DispatcherServlet 請求映射配置為 /, 則 Spring MVC 將捕獲 WEB 容器的所有請求, 包括靜態(tài)資源的請求, SpringMVC 會將他們當(dāng)成一個普通請求處理, 因找不到對應(yīng)處理器將導(dǎo)致錯誤。

②解決: 在 SpringMVC 的配置文件中配置 <mvc:default-servlet-handler/>

? 4)? 配置后,原來的請求又不好使了

需要配置<mvc:annotation-driven />

7.7.4 關(guān)于<mvc:default-servlet-handler/>作用

7.7.5 通過jQuery轉(zhuǎn)換為DELETE請求

7.7.6 刪除操作流程圖解

7.8 RESTRUL_CRUD_修改操作

7.8.1 根據(jù)id查詢員工對象,表單回顯

7.8.2 提交表單,修改數(shù)據(jù)