接口请求调用归纳(一)

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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容