httpServletRequest,继承了ServletRequest,多了一些关于http协议的方法, 不过两者总体相差不大,ServletRequest 无法获取 http 信息.
1.获取客户端请求参数
- String request.getParameter(String name); //获取一个参数的一个值
- String[] request.getParameterValues(Stirng name);//某个参数的所有值
- Enum[] request.getParameterNames();获取所有参数名称
- Map<String,String []> request.getParameterMap();//获取所有参数名和值
2.设置请求参数的编码:request.setCharaterEncoding(“utf-8”);
3.获取一些常用的信息
- getContentLength():返回请求正文的长度。
- getContentType():获得请求正文的MIME类型。
- getInputStram():返回用于读取请求正文的输入流。
- getLocalAddr():返回服务器的IP地址。
- getLocalName():返回服务器端的主机名。
- getLocalPort():返回服务器端的FTP端口号。
- getParameter(String name):获取参数
- getProtocal():返回客户端和服务器端通信所用的协议的名称及版本号。
- getReader():返回用户读取字符串形式的请求正文的BufferedReader对象。
- getRemoteAddr():返回客户端的IP地址。
- getRemoteHost():返回客户端的主机名。
- getRemotePort():返回客户端的FTP端口号。
4.获取http协议的请求信息( 必须是 httpServeltRequest )
- 获取请求行信息
- getMethod();获取请求方式
- getContextPath();获取项目虚拟目录
- getServletPath();获取servlet路径
- getQueryString();获取请求参数数据
- getRequestURI();获取uri,(除协议和域名剩下的部分)
- getRequestURL();获取url,(资源的绝对路径)
- getProtocal();获取请求协议以及版本
- getRemoteAddr();获取客户主机的ip地址
- 获取请求头参数
- getHeader(String name);获取某个请求头的值
- getHeaderNames();获取所有的请求头名称
- 获取请求体参数
- 先获取流对象
- getReader();字符输入流对象
- getInputStream();获取字节输入流对象
- 从流对象中获取参数:getQueryString();
- 先获取流对象
5.请求转发
- 步骤:
- 获取请求转发器对象:getRequestDispatcher(String path);
- 使用转发对象进行转发:forward(request,response);
- 特点:
- 浏览器地址栏不发生变化
- 只能转发到服务器内部资源, 且应该是servlet
- 客户端只发送了一次请求
- 路径写法: 只能相对路径,可以访问WEB-INF
- 访问class时,目录在WEB-INF/classes
- ./xx表示当前文件夹某个文件
- xx/表示子集目录
- /xx表示根目录下的xx
6.共享数据
先了解域对象::一个有作用范围的对象,可以在范围内共享数据
- request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
- 方法:
- setAttribute(String name,Object obj):存储数据
- getAttribute(String name):通过键名获取
- removeAttribute(String name):通过键名移除数据
7.获取servletContent:getServletContent();
8.request对象的生命周期:
- 每次请求都会创建一个请求对象
- 服务方法执行后就会销毁