获取请求消息数据
获取请求行数据
请求行: GET /test/demo?name=zhangsan HTTP/1.1
- 获取请求方式 GET
String getMethod()
- 获取虚拟目录 /test
String getContextPath()
- 获取Servlet路径 /demo
String getServletPath()
- 获取get方式请求参数 name=zhangsan
String getQueryString()
- 获取请求URI /test/demo
String getRequestURI()
StringBuffer getRequestURL()
- 获取协议及版本 HTTP/1.1
String getProtocol()
- 获取客户机的ip地址
String getRemoteAddr
获取请求头数据
- 通过请求头的名称获取请求头的值 请求头的名称不区分大小写
String getHeader(String name)
- 获取所有的请求头名称 返回值可以理解为是一个迭代器
Enumeration<String> getHeaderNames()
获取请求体数据
只有POST方法才有请求体
步骤:获取流对象,再从流对象中获取数据
- 获取字符输入流,只能操作字符数据
BUfferedReader getReader()
- 获取字节输入流,可以操作所有类型数据
ServletInputStream getInputStream()
其他功能
获取请求参数通用方法
- 根据参数名称获取参数值
String getParameter(String name)
- 根据参数名称获取参数值的数组
String[] getParameter(String name)
- 获取请求的所有参数名称
Enumeration<String> getParameterNames()
- 获取所有参数的Map集合
Map<String, String[]> getParameterMap()
.
中文乱码问题
req.setCharacterEncoding("urf-8");
请求转发
请求转发是一种在服务器内部的资源跳转的方式
req.getRequestDispatcher("/demo2").forward(req, resp);
共享数据(域对象)
域对象:一个有作用范围的对象,可以在范围内共享数据
request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
- 存储数据
void setAttribute(String name, Object obj)
- 获取数据
Object getAttribute(String name)
- 移除数据
void removeAttribute(String name)
获取ServletContext
ServletContext getServletContext()