1、ServletRequest、HttpServletRequest
HttpServletRequest和ServletRequest都是接口,HttpServletRequest继承自ServletRequest
HttpServletRequest相对于ServletRequest多了一些针对HTTP协议的方法,比如getSession(),getHeader(),getMethod()等
2、request
request是客户端到服务器的请求,请求信息应包括用于资源的方法、资源的标识符和协议的版本号
request不用事先宣告,就可以在jsp网页中使用,在转译为servlet后,他会转换为HttpServletRequest型态的对象,HttpServletRequest对象是关于客户端所发出的请求对象,只要有关于客户端请求的信息,都可以由他来取得,例如请求标头、请求方法、请求参数、使用者IP等
request对象是一个存储数据的区域对象:
setAttribute(String name,Object o)
getAttribute(String name)
removeAttribute(String name)
Request完成请求转发
RequestDispatcher getRequestDispatcher(String Path)
3、Servlet
servlet理论上可以处理多种形式的请求响应形式,http只是其中之一,所以 HttpServletRequest、HttpServletResponse分别是ServletRequest和ServletResponse的子类
4、HttpServlet
HttpServlet类需要两个参数HttpRequest和HttpResponse
HttpServlet实现了service方法(servlet生命周期),servlet的service方法有两个参数:ServletRequest和ServletResponse
HttpServlet实现的service方法将两个对象进行了强转:HttpServletRequest和HttpServletResponse
Servlet--》(ServletRequest、ServletResponse)--》(HttpServletRequest、HttpServletResponse)
5、ServletContext、HttpSession、HttpServletRequest
ServletContext > HttpSession > HttpServletRequest
- 关于会话的概念:一个会话——浏览器开启->关闭
- ServletContext:即application,是整个应用范围的,可以完成跨会话共享数据
- HttpSession: 是会话范围的,可以完成跨请求共享数据
- HttpServletRequest:是请求范围的,可以跨servlet共享数据,但这些servlet必须在一个请求中,例如需要请求转发 request.getRequestDispatcher(“/other”).forward(request, response);
6、HttpSession与HttpServletRequest的区别
session是以HttpSession的接口对象的形式出现
- session和cookie:session是将会话状态保存在了服务端;cookie是将会话状态保存在了客户端
- session的创建 HTTPSession session=request。getSession();
- request中getSession()方法:参数true或false:
- 若要向session中写入数据,需要 request.getSession(true),意义是有老的session用老的,没有老的创建新的
- 若要从session中读取数据,需要request.getSession(false),意义是有老的session用老的,没有老的返回null。因为要读取数据所以只要老的session里面才有数据,新建的session不可能有数据
参考博文:https://blog.csdn.net/w_linux/article/details/79770735