# Request 概述
# request 对象和 response 对象的原理
- tomcat 服务器会根据请求 u1 中的资源路径,创建对应的 ServletDemo1 对象
- tomcat 服务器,会创建 request 对象和 response 对象,request 对象中封装请求消息数据
- tomcat 将 request 和 response 两个对象传递给 service 方法,并调用 service 方法
- 程序员可通过 request 对象获取请求消息数锯,通过 response 对象设置响应消息数据
- 服务器给浏览器做出响应之前,会从 response 对象中拿程序员设置的响应消息数据
# request 对象继承体积结构
ServletRequest -- 接口 | |
| 继承 | |
HttpServletRequest -- 接口 | |
| 实现 | |
org.apache.catalina.connector.RequestFacade -- 类(tomcat) |
# Request 功能
# 获取请求消息数据通用方法
- 根据参数名称获取参数值:
String getParameter(String name)
- 根据参数名称获取参数值的数组:
String[] getParameterNames()
- 获取所有请求的参数名称:
Enumeration<String> getParameterNames
- 获取所有参数的 map 集合:
Map<String,String[]> getParameterMap
# 中文乱码问题
在获取参数前,设置 request 的编码: request.setCharacterEncoding("utf-8")
# 请求转发
# 请求转发步骤
- 通过 request 对象获取请求转发器对象:
RequestDispatcher getRequestDispatcher(String path)
- 使用 RequestDispatcher 对象来进行转发:
forward(ServletRequest request, ServletResponse response)
# 请求转发特点
- 浏览器地址栏路径不发生变化
- 只能转发到当地服务器内部资源中
- 转发是一次请求
# 共享数据
# 共享数据概述
- 域对象:一个有作用范围的对象,可以在范围内共享数据
- request 域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
# 共享数据方法
- 存储数据:
void setAttribute(String name,Object obj)
- 通过键获取值:
Object getAttribute(String name)
- 通过键移除键值对:
void removeAttribute(String name)
# 获取 ServletContext
ServletContext getServletContext()
:获取 ServletContext
# BeanUtils 工具类
# JavaBean
标准的 Java 类,用于封装 JavaBean
- 要求:
- 类必须被 public 修饰
- 必须提供空参的构造器
- 成员变量必须使用 private 修饰
- 提供公共的 setter 和 getter 方法
- 功能:简化数据封装
# 概念
成员变量
属性:setter 和 getter 方法截取后的产物
例如:geyUsername () -> Username -> username
# 方法
setProperty(Object,属性名,属性值)
getProperty(Object,属性名)
populate(Object obj, Map map)
:将 map 集合的键值对信息,封装到对应的 JavaBean 对象中