一、Request(获取请求数据)
(1)Request
继承体系
![](https://i-blog.csdnimg.cn/blog_migrate/58e1d9775259cdc1051d653e5d9bb1e5.png)
(2)Request获取请求数据
①获取请求行数据
- getMethod()获取请求方式
- getContextPath()获取 项目访问路径
- getRequestURL()获取请求URL
- getRequestURI()获取请求URI
- getQueryString()获取GET请求方式的请求参数
②获取请求头数据
- getHeader(String name)根据请求头名称获取其对应的值
③获取请求体数据
- 如果是纯文本数据:getReader()
- 如果是字节数据如文件数据:getInputStream()
(3)通用方式获取请求参数
-
Map<String,String[]> getParameterMap()
-
String[] getParameterValues(String name)
-
String getParameter(String name)
(4)Request请求转发
- 请求转发特点:
- 浏览器地址栏路径不发生变化
- 只能转发到当前服务器的内部资源
- 一次请求,可以在转发的资源间使用request共享数据
- 实现方式:request.getRequestDispatcher("资源B路径 ").forward(req,resp);
- 转发中使用Request对象实现资源共享
-
void setAttribute(String name,Object o);存储数据到request域
-
Object getAttribute(String name);根据key获取值
-
void removeAttribute(String name);根据key删除键值对
-
二、Response(设置响应数据)
1、Response继承体系![](https://i-blog.csdnimg.cn/blog_migrate/37cb023e5b2cd46fa2e6c909e49e9230.png)
2、Response设置响应数据功能介绍
响应数据三部分:
![](https://i-blog.csdnimg.cn/blog_migrate/751476b16519530b654b058b2be361a4.png)
3、Response完成重定向
- 重定向特点
- 浏览器地址栏路径发生变化
- 可以重定向到任意位置的资源(服务器内部、外部均可)
- 两次请求,不能在多个资源使用request共享数据
①resp.setStatus(302);resp.setHeader("location","资源B的路径"
②resp.sendRedirect("资源B的路径");
(例如:resp.sendRedirect("/web-demo/resp");需要加虚拟目录)
4、Response响应字符数据
注意:该流不需要关闭,随着响应结束,response对象销毁,由服务器关闭
5、Response响应字节数据