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 />