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)? 刪除后效果:對應記錄從數據表中刪除
7.1.5 修改操作-去往修改頁面
? 1)? URI:emp/{id}
? 2)? 請求方式:GET
? 3)? 顯示效果:回顯表單。
7.1.6 修改操作-修改員工
? 1)? URI:emp
? 2)? 請求方式:PUT
? 3)? 顯示效果:完成修改,重定向到 list 頁面。
7.1.7 相關的類
省略了Service層,為了教學方便
? 1)? 實體類:Employee、Department
? 2)? Handler:EmployeeHandler
? 3)? Dao:EmployeeDao、DepartmentDao
7.1.8 相關的頁面
? 1) list. jsp
? 2) input. jsp
? 3)edit.? jsp
7.2 搭建開發環境
? 1)? 拷貝jar包
? 5)? 創建相關頁面
/WEB-INF/views/list.jsp
index.jsp
? 6)? 增加實體類? 7)? 增加DAO類
7.3 RESTRUL_CRUD_顯示所有員工信息
7.4 RESTRUL_CRUD_添加操作
7.5 使用Spring的表單標簽
? 1)? 通過 SpringMVC 的表單標簽可以實現將模型數據中的屬性和 HTML 表單元素相綁定,以實現表單數據更便捷編輯和表單值的回顯?
? 2)? form 標簽
- 一般情況下,通過 GET 請求獲取表單頁面,而通過 POST 請求提交表單頁面,因此獲取表單頁面和提交表單頁面的 URL 是相同的。
- 只要滿足該最佳條件的契約,<form:form> 標簽就無需通過 action 屬性指定表單提交的 URL
- 可以通過 modelAttribute屬性指定綁定的模型屬性,若沒有指定該屬性,則默認從 request 域對象中讀取 command?的表單 bean,如果該屬性值也不存在,則會發生錯誤。
? 3)? SpringMVC 提供了多個表單組件標簽,如 <form:input/>、<form:select/> 等,用以綁定表單字段的屬性值,它們的共有屬性如下:
- path:表單字段,對應 html 元素的 name 屬性,支持級聯屬性
- htmlEscape:是否對表單值的 HTML 特殊字符進行轉換,默認值為 true
- cssClass:表單組件對應的 CSS 樣式類名
- cssErrorClass:表單組件的數據存在錯誤時,采取的 CSS 樣式
? 4)? form:input、form:password、form:hidden、form:textarea:對應 HTML 表單的 text、password、hidden、textarea 標簽
? 5)? form:radiobutton:單選框組件標簽,當表單 bean 對應的屬性值和 value 值相等時,單選框被選中??
? 6)? form:radiobuttons:單選框組標簽,用于構造多個單選框
- items:可以是一個 List、String[] 或 Map
- itemValue:指定 radio 的 value 值。可以是集合中 bean 的一個屬性值
- itemLabel:指定 radio 的 label 值
- delimiter:多個單選框可以通過 delimiter 指定分隔符
? 7)? form:checkbox:復選框組件。用于構造單個復選框
? 8)? form:checkboxs:用于構造多個復選框。使用方式同 form:radiobuttons 標簽
? 9)? form:select:用于構造下拉框組件。使用方式同 form:radiobuttons 標簽
? 10)? form:option:下拉框選項組件標簽。使用方式同 form:radiobuttons 標簽
? 11)? form:errors:顯示表單組件或數據校驗所對應的錯誤
- <form:errors path= “*” /> :顯示表單所有的錯誤
- <form:errors path= “user*” /> :顯示所有以 user 為前綴的屬性對應的錯誤
- <form:errors path= “username”/> :顯示特定表單對象屬性的錯誤
?
7.6 添加員工實驗代碼?
? 1)? 表單
? 2)? 控制器方法
7.7 RESTRUL_CRUD_刪除操作&處理靜態資源
7.7.1 刪除實驗代碼
7.7.2 HiddenHttpMethodFilter過濾器
發起請求,無法執行,因為delete請求必須通過post請求轉換為delete請求,借助:HiddenHttpMethodFilter過濾器
7.7.3 需要使用jQuery來轉換請求方式
? 1)? 加入jQuery庫文件
/scripts/jquery-1.9.1.min.js
? 2)? jQuery庫文件不起作用? 3)? 解決辦法,SpringMVC 處理靜態資源
- 為什么會有這樣的問題:
優雅的 REST 風格的資源URL 不希望帶 .html 或 .do 等后綴,若將 DispatcherServlet 請求映射配置為 /, 則 Spring MVC 將捕獲 WEB 容器的所有請求, 包括靜態資源的請求, SpringMVC 會將他們當成一個普通請求處理, 因找不到對應處理器將導致錯誤。
②解決: 在 SpringMVC 的配置文件中配置 <mvc:default-servlet-handler/>
? 4)? 配置后,原來的請求又不好使了
需要配置<mvc:annotation-driven />