一.HttpServletRequest的概述
客户端发送给服务器端的数据我们创建Servlet时会覆盖service()方法.service方法中的两个参数之一的request的类型是HttpServletRequest. HttpServletRequest是ServletRequest的子接口
二.运行流程.如图所示
三.request可以获得的内容
通过request可以分别获得Http请求的请求行,请求头和请求体
1.获得请求行
1.1 获得请求方式: String getMethod();
1.2 获得请求的资源 获取URI---getRequestURI() 获取URL---getRequestURL()
获取虚拟目录---getContextPath() 获取Servlet路径---getServletPath()
获取get方式请求参数--- getQueryString() 获取客户机的ip地址---getRemoteAddr();
2 获得请求头 常用方法 --getHeader() --getHeaderNames()
3 获得请求体(只有POST方法才有请求体)
3.1 获取流对象
3.1.1 BufferedReader getReader() --获取字符输入流,只能操作字符数据
3.1.2 ServletInputStream getInputStream() --获取字节输入流,可以操作所有类型数据
3.2 得到流对象之后可以从流对象中拿数据
四.其他功能
1.获取请求参数通用方式(get于post请求方式都可以使用)
1.1 getParameter(String name) --根据参数名称获取参数值
1.2 getParameterValues(String name): 根据参数名称获取参数值的数组
1.3 getParameterNames(): 获取所有请求的参数名称
1.4 getParameterMap(): 获取所有参数的map集合
2.请求转发
使用方式: request.getRequestDispather(String path).forword(request,response);
特点 ①.浏览器地址栏路径不发生变化 ②.只能转发到当前服务器内部资源中 ③.只是一次请求
3.域对象: 一个有作用范围的对象,可以在范围内共享数据
方法: void setAttribute(String name,Object obj) 存数据
Object getAttritude(String name) 通过键获得数据
vodi removeAttribute(String name): 通过键移除键值对
request域:范围是一次请求,一般实在转发中共享数据 在访问时创建request,在响应结束销毁request
ServletContext: 范围是整个web应用.在服务器启动时创建,在服务器关闭时销毁