学习日记-SpringMVC-day50-9.8
知识点:
1.Postman-Controller测试实例(1)
知识点 | 核心内容 | 重点 |
Postman测试Controller层 | 使用Postman对UserHandler控制器进行测试 | 请求URL构建规则(localhost:8080/springmvc/user/by) |
HTTP请求要素 | 确定请求方式(POST)、URL、参数、headers | PostMapping注解与请求方式对应关系 |
请求头设置 | Headers选项卡的特殊参数配置 | Content-Type等HTTP头字段作用 |
测试流程标准化 | 四步测试法: 1. 确定URL; 2. 确定请求方式; 3. 确定参数; 4. 确定headers | 参数携带方式选择(Params/Body) |
实战演示 | 对by方法的完整测试过程 | 服务未启动时的错误排查 |
方法测试扩展 | 同控制器内search/im/register等方法测试 | 不同请求方法的参数传递差异 |
2.Postman-Controller测试实例(2)
知识点 | 核心内容 | 重点 |
Postman基础请求测试 | 通过GET/POST请求测试userHandler控制器方法,包括URL构造、参数传递、请求头设置 | 路径变量(如/reg/{username}/{userId})与查询参数(如bookId=100)的区别 |
HTTP请求方式验证 | 演示@RequestMapping默认支持GET/POST,而@GetMapping仅限GET | 错误请求方式(如POST调用@GetMapping)触发405错误 |
动态路径测试 | 多层路径通配符**(如/message/m1/**)和占位符(如/reg/{username})的应用 | 路径变量值提取与参数绑定的关联性 |
请求参数校验 | 必填参数(如bookId必须为100)和可选参数(如email可空)的测试逻辑 | 参数缺失或格式错误的处理差异 |
响应结果对比 | 通过Preview和后台日志双重验证请求成功/失败(如操作成功 vs 405错误) | 响应状态码(如200/405)与实际业务逻辑的匹配 |
3.Postman发送Json
知识点 | 核心内容 | 重点 |
Postman的HTTP请求头修改 | 在发送JSON数据时需设置Content-Type: application/json,并在Body中填写对应JSON格式数据 | Headers拼写易错(如hiders应为headers) |
JSON数据格式规范 | 通过大括号{}定义键值对(如{"name":"Jackie", "id":100, "email":"xx@sohu.com"}) | JSON语法校验(冒号/引号使用) |
文件上传测试 | 通过修改Content-Type可支持文件格式提交(如multipart/form-data) | 与JSON请求头的区别 |
后端响应处理 | 成功操作后返回200 success及JSON格式结果,需检查数据表记录更新 | 响应格式混淆(页面/JSON) |
Postman实操流程 | 1. 设置Headers → 2. 填写Body → 3. 点击Send → 4. 验证返回数据 | 步骤遗漏风险(如未设Content-Type) |
4.Rest基本介绍
知识点 | 核心内容 | 重点 |
REST概念 | 表现层状态转换的架构风格,通过URL和HTTP方法体现资源操作 | 全称理解(Representational State Transfer)与中文翻译对应关系 |
HTTP方法语义 | GET(查询)、POST(新增)、PUT(更新)、DELETE(删除)的CRUD对应关系 | PUT与POST在更新操作时的区别应用场景 |
传统URL vs REST风格 | 传统方式通过参数说明操作类型,REST通过HTTP方法体现业务逻辑 | /getBook?id=1 与 /book/1 的范式对比 |
浏览器方法限制 | 默认只支持GET/POST,需通过HiddenHttpMethodFilter转换PUT/DELETE | 过滤器仅能处理POST请求的转换机制 |
过滤器配置 | 需在web.xml中配置HiddenHttpMethodFilter实现方法转换 | 必须通过_method字段传递真实请求类型 |
方法转换原理 | 过滤器读取_method参数值,将POST请求转换为目标HTTP方法 | 源码级判断逻辑:先验证POST再读取method字段 |
5.Rest实例-需求说明
知识点 | 核心内容 | 重点 |
REST风格API设计 | 通过URL路径和HTTP方法(GET/POST/PUT/DELETE)区分操作类型 | POST请求模拟DELETE/PUT(需_method参数转换) |
前端页面交互 | 超链接触发GET查询,表单提交触发POST新增 | REST风格URL与HTTP方法的匹配逻辑 |
请求方法转换 | 使用过滤器将POST请求转换为Spring MVC的PUT/DELETE请求 | HiddenHttpMethodFilter的工作原理 |
增删改查实现 | 通过统一URL路径(如/books)结合不同HTTP方法完成操作 | URL路径设计与参数传递方式 |
6.Rest实例-配置
知识点 | 核心内容 | 重点 |
REST风格URL请求实现 | 配置HiddenHttpMethodFilter过滤器,将POST请求转换为PUT/DELETE请求 | 过滤器需配置在web.xml中,映射路径为/* |
Spring MVC高级功能支持 | 配置mvc:annotation-driven以支持JSR303校验和动态请求映射 | 注意命名空间选择(mvc:而非tx:) |
静态资源处理 | 配置mvc:default-servlet-handler将CSS/JS请求交给Tomcat处理 | 易忽略点:Spring MVC默认不处理静态资源 |
REST风格前端页面 | JSP页面通过表单隐藏字段(_method=PUT/DELETE)触发请求转换 | 需与后端过滤器配合使用 |
源码调试 | 通过Debug分析HiddenHttpMethodFilter的请求转换逻辑 | 核心方法:doFilterInternal() |
7.Rest实例-Get
知识点 | 核心内容 | 重点 |
REST风格请求处理 | 创建BookHandler处理书籍相关请求 | 路径变量配置 vs 传统参数传递 |
控制器配置 | 使用@Controller和@RequestMapping注解 | GetMapping与RequestMapping区别 |
前后端交互 | 前端JSP页面调用后端REST接口 | URL拼接规范(斜杠处理) |
请求方法设计 | 实现GET查询接口(/user/book/{id}) | 路径变量@PathVariable使用 |
代码结构规范 | 在src/web下创建rest子包 | 包命名约定与项目结构 |
测试验证流程 | 重新发布项目并测试接口连通性 | 接口调试技巧与日志查看 |
8.Rest实例-Post
知识点 | 核心内容 | 重点 |
REST风格添加书籍 | 通过POST请求提交表单数据,后端使用@PostMapping接收并处理 | 前端表单action路径与后端接口匹配、参数名一致性 |
中文乱码问题 | 提交中文数据时会出现乱码,需通过过滤器解决 | 乱码原因与解决方案的关联性 |
RESTful接口设计 | 使用@PostMapping("/book")简化配置,替代@RequestMapping(method=POST) | 注解选择对代码可读性的影响 |
前后端参数传递 | 表单字段名(如bookName)必须与后端形参名严格一致 | 参数绑定机制的理解 |
功能测试验证 | 通过页面提交数据,检查后端控制台输出是否匹配 | 测试用例覆盖边界值(如中文、特殊字符) |
9.Rest实例-Delete(1)
知识点 | 核心内容 | 重点 |
REST风格删除操作 | 需要通过HiddenHttpMethodFilter将GET请求转换为DELETE请求 | 必须使用POST方式提交DELETE参数 |
HiddenHttpMethodFilter机制 | 1. 默认读取_method参数; 2. 仅支持POST方式提交的PUT/DELETE/PATCH转换 | 1. 参数名可配置; 2. 只处理POST请求 |
前端解决方案 | 使用jQuery拦截超链接点击事件,通过隐藏表单提交POST请求 | GET转POST的技术实现 |
后端方法配置 | @RequestMapping(value="/book/{id}", method=RequestMethod.DELETE) | 路径变量名必须与方法参数名一致 |
错误处理 | 直接返回success视图会导致错误 | 需要特殊处理DELETE请求的响应 |
10.Rest实例-Delete(2)
知识点 | 核心内容 | 重点 |
表单提交方式转换 | 通过隐藏表单将GET请求转换为POST请求,实现RESTful风格操作 | method属性动态赋值与return false阻止默认提交行为 |
jQuery事件绑定 | 使用$(document).ready()加载后绑定超链接点击事件 | this.href获取链接地址与submit()手动提交表单 |
隐藏域参数传递 | 通过<input type="hidden">传递method=DELETE参数 | 隐藏域name属性需与后端接收参数名匹配 |
后端请求处理 | 使用@RequestMapping(method=RequestMethod.DELETE)接收转换后的请求 | JSP仅支持GET/POST的报错解决方案 |
调试技巧 | 通过alert和console.log分阶段验证前端代码执行逻辑 | 表单action动态赋值与网络请求监控 |