Q&A宝典-前端进阶篇

2019/5/24 复习

# Servlet(单实例多线程)

1.Servlet的生命周期
  1. 构造方法
  2. 初始化方法init()
  3. service方法(由容器帮我们调用,不建议重写)
  4. doGet/doPost方法(需要我们来进行逻辑处理)
  5. 销毁方法destory()
2. Servlet的四个范围及其局限性

因为可以通过这四个对象setAttribute()传值。

  1. pageContext:第一范围,页面跳转立即失效
  2. HttpServletRequest:第二范围,重定向失效
  3. HttpSession:第三范围,默认有效期到或者浏览器关闭失效
  4. ServletContext:第四范围,只要tomcat开着一直有效
3. 两种跳转方式
  1. 请求转发
    跳转之后浏览器地址栏不发生改变;
    跳转之前执行的是doGet/doPost,跳转之后还是执行的这个方法

  2. 重定向
    跳转之后浏览器地址栏发生改变;
    跳转之后肯定执行doGet方法;
    request第二范围失效(因为浏览器发送的不是同一个请求了)

4. session保存信息及删除
  • 保存信息:
    session.setAttribute("n",name);
    String name = (String)sessin.getAttribute("n");
  • 删除信息:
    session.removeAttribute("n");
    session.invalidate()是把session内的所有属性都清除;
5. Cookie HttpSession两种会话机制比较
  • Cookie:
    浏览器提供的会话信息,安全性较低;
    Cookie cookie = new Cookie(String,String);
    cookie仅支持字符串,默认不支持中文,是将信息保存到客户端本地
  • session:
    服务器提供的会话信息,安全性较高;
    session的信息当默认时间到期(期间没有任何操作!!)或者关闭浏览器或者调用invalidate() 之后失效

不过现在一般都用基于客户端的JWT (opens new window),轻便安全高效

6. Cookie和Session之间有什么联系,如果有,请说出他们的联系
  1. session默认依靠cookie维持,如果cookie被禁用,那么session会话机制失效
  2. session是由servlet容器创建的
    当用户getSession()时,web容器会先去cookie查找有没有这个session的id,如果没有,那么cookie就会分配一个就jsessionid并且保存在cookie中

# 偏后端

1. Servlet核心的API?

Javax.servlet.Servlet

Javax.servlet.ServletConfig

Javax.servlet.http.HttpServlet

HttpServletRequest,HttpServletResponse

2. Servlet/jsp中的对象的创建、实现和调用?
创建者 实现者 调用者
Servlet 容器 我们 容器
ServletConfig 容器 容器 我们
Cookie 我们 容器 我们
Session 容器 容器 我们
此生不换
青鸟飞鱼