javaweb基础知识概览

129 阅读2分钟

一、Servlet

Servlet是一套规范

  • 后端 遵守 规范 编写 小程序
  • web服务器 遵守 规范 调用 小程序
    • 模拟流程
      • 实例化Servlet、ServletRequest、ServletResponse
      • 调用Servlet的service方法,ServletRequest、ServletResponse为入参

常见接口

  • init 第一次请求 或 容器启动 调用
  • destroy 容器关闭 调用
  • service 每次请求调用
  • getServletConfig
    • 一个Servlet对应一个ServletConfig
    • 多个Servlet对应一个ServletContext

请求转发

  • 服务器内部行为、地址栏不变
  • 调用新Servlet的service方法

重定向

  • 客户端重新发请求、地址栏变化

会话管理

  • 会话 -- 一个客户端的多次请求
  • session 服务端
    • request.getSession
      • 无cookie新建HttpSession,JSESSIONID以cookie形式写入HttpServletResponse中
      • 有则查
  • cookie 客户端 浏览器发请求时携带
  • 简单的登录校验
    • 查session是否存key为user,有则表示登录成功,可执行业务逻辑
    • 无则重定向至登录页面,查数据库验证账号和密码,正确则往session中存入user

域对象

  • 请求域 HttpServletRequest
    • 数据只存在 该次请求中
  • 会话域 HttpSession
    • 数据存全局,但只有携带正确JSESSIONID的请求能访问
  • 应用域 ServletContext
    • 数据存全局

二、Filter

一个规范,常见接口

  • init 初始化方法,容器调用传入配置信息
  • doFilter 过滤方法,实现Servlet执行前、后的逻辑
    • 入参ServletRequest、ServletResponse、FilterChain
    • FilterChain.doFilter(request, response) 放行请求,继续执行下一个Filter?
      • FilterChain 粗浅理解、责任链设计模式
        • Filter数组,存放Filter穿起来的链
        • 下标指针,表示当前执行到哪个Filter
        • doFilter方法
          • 判断指针位置,执行完毕,调用Servlet的service方法
          • 否则,取出Filter,调用Filter的doFilter方法,入参为request、response、this
            • 在执行下一个Filter的doFilter方法时,this.doFilter可能会被调用,较为复杂的递归
            • 基于这种递归实现,可以使得多个Filter分层次将Servlet抱起来,优先级最高的Filter,在业务逻辑前最先执行,在业务逻辑后最后执行
  • destroy 销毁方法,容器回收过滤器对象前调用

三、Listener

观察者模式

分类

  • 监听对象划分
    • request、session、application
  • 监听事件划分 对应不同的接口方法
    • 对象创建和销毁
    • 数据更新
    • 其他
      • HttpSessionBindingListener 监听 Listener 在 session域中的增加、移除
      • HttpSessionActivationListener 钝化监听器,监听某个对象在session中序列化、反序列化

四、AJAX

Asynchronous JavaScript and XML

简单理解,js代码异步发送http请求,请求收到后回调函数执行,渲染xml页面