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

7.7.4 关于<mvc:default-servlet-handler/>作用

7.7.5 通过jQuery转换为DELETE请求

7.7.6 删除操作流程图解

7.8 RESTRUL_CRUD_修改操作

7.8.1 根据id查询员工对象,表单回显

7.8.2 提交表单,修改数据