接口请求调用归纳(一)

HttpServletRequest

1. Servlet基础
生命周期的阶段:初始化、运行、销毁

  • 初始化 : 先解析请求已有该Servlet直接使用,没有创建Servlet实例,然后调用init()方法
  • 运行:为这个请求创建ServletRequest和ServletResponse对象,他们作为参数传递给 service() 方法
  • 销毁: Servlet 对象创建后就一直在,只有服务程序关闭时调用destroy() 方法

web 域的范围: servletContxt > HttpSession > HttpServletRequest
注:一个web应用对应一个ServletContext

2. session
服务器会为每一个用户 创建一个独立的HttpSession, Session有默认的存活时间(30分钟)
HttpSession对象由HttpServletRequest对象的getSession方法获取

常用方法
setAttribute(String name, Object value)
getAttribute(String name)
removeAttribute(String name)
getId() 
getServletContext()

3.cookie
Cookie[]对象由HttpServletRequest对象通过getCookies()方法获取

遍历数组,并使用 getName() 和 getValue() 方法来访问每个 cookie 和关联的值

response.addCookie(cookie)  //给响应HttpServletResponse添加cookie

4.request常用方法

  • 获得客户机信息
  • 获取请求头: getHeader、getHeaders、getHeaderNames
  • 获取请求参数: getParameter、getParameterValues

5. RequestContextHolder
优雅的在需要用的地方使用HttpServletRequest

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
        .getRequestAttributes()).getRequest();

要理解上面的为何可以这么使用,需要理解两个问题:

  • RequestContextHolder为什么能获取到当前的HttpServletRequest:
    ThreadLocal的应用
  • HttpServletRequest是在什么时候设置到RequestContextHolder
    HttpServletRequest是在执行doService方法之前设置的,执行完业务逻辑或者抛出异常时重置RequestContextHolder移除当前的HttpServletRequest

你可能感兴趣的:(接口请求调用归纳(一))