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