知识点:
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动态赋值与网络请求监控 |