1. 程式人生 > >REST風格的增刪改查(1)

REST風格的增刪改查(1)

一、RESTFUL風格的CRUD(增刪改查)案例
1.需求:
①顯示所有員工資訊:URI:emps,請求方式:GET
②新增員工所有資訊:顯示新增頁面:URI:emp,請求方式:GET,
新增員工資訊:URI:emp,請求方式:POST
③刪除員工資訊:URI:emp/{id},請求方式DELETE
④修改操作:lastName不可修改
顯示修改頁面:URI:emp/{id}
請求方式:GET
顯示效果:回顯表單
修改員工資訊:URI:emp
請求方式:PUT
顯示效果:修改完成,重定向到list頁面
2.相關的類
實體類:Employee、Department
Handler:EmployeeHandler
Dao:EmployeeDao、DepartmentDao
3.相關頁面
list.jsp
input.jsp
edit.jsp

注意:控制器跳轉時:當請求到這個方法,把查到員工的集合放到Map中,同時自動的放入到請求域中,跳轉到目標頁面之後就可以直接獲取
在CRUD操作中,修改操作要注意:
1.首先因為新增和修改表單樣式差不多,所以使用了同一個頁面input.jsp,因此需要使用ID來區分不同的操作,
當有ID傳到input.jsp時,說明是修改操作,沒有ID時說明是新增操作。
2.修改操作,首先規定姓名不可更改,所以在修改時,使用if取消掉name的輸入框,使用改變
請求方式,提交到Handler類中,在Handler類分兩步完成修改操作,其一:跳轉到修改頁面input.jsp,其中跳轉到input.jsp頁面需要回顯,
所以點選修改時需要傳一個引數ID,使用該引數查詢到一個物件,並把該物件放入到map中同時也會放入到域物件中,其二:提交修改後的資料
該操作使用@ModelAttribute註解,由於提交的頁面input.jsp中會提交一個隱藏域ID,並改變請求方式,
所以該註解會在從資料庫中根據ID找到一個物件,由於@ModelAttribute註解標註的方法會在目標方法之前執行,所以目標方法執行employeeDao.save(employee);
操作時,物件employee是一個:從資料庫中取出的,並把表單提交的引數值賦到其中之後的物件

二、資料校驗和格式化
格式化:
1.格式化日期:由字串轉化成yyyy-MM-dd
在實體類上使用@DateTimeFormat(pattern=”yyyy-MM-dd”)標註屬性private Date birth;
在Spring配置檔案中配置<mvc:annotation-driven></mvc:annotation-driven>

2.格式化金額:使用註解@NumberFormat(pattern=”#,###,###.#”)標註在屬性private Float salary;
校驗:
1.使用JSR303驗證標準
①加入hibernate validator驗證框架的jar包
②在SpringMVC配置檔案中新增:<mvc:annotation-driver>


③在Bean的屬性上新增對應的註解
④在目標方法Bean型別的前面新增@Valid註解(在Controller類控制跳轉的handler中,)
注意:需校驗的Bean物件和其繫結結果物件/錯誤物件是成對出現的,他們之間不允許聲其他入參:
(@Valid Employee employee, BindingResult result)