Q&A宝典-前端进阶篇
z 2019-05-24
复习
# Servlet(单实例多线程)
1.Servlet的生命周期
- 构造方法
- 初始化方法init()
- service方法(由容器帮我们调用,不建议重写)
- doGet/doPost方法(需要我们来进行逻辑处理)
- 销毁方法destory()
2. Servlet的四个范围及其局限性
因为可以通过这四个对象setAttribute()传值。
- pageContext:第一范围,页面跳转立即失效
- HttpServletRequest:第二范围,重定向失效
- HttpSession:第三范围,默认有效期到或者浏览器关闭失效
- ServletContext:第四范围,只要tomcat开着一直有效
3. 两种跳转方式
请求转发
跳转之后浏览器地址栏不发生改变;
跳转之前执行的是doGet/doPost,跳转之后还是执行的这个方法重定向
跳转之后浏览器地址栏发生改变;
跳转之后肯定执行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之间有什么联系,如果有,请说出他们的联系
- session默认依靠cookie维持,如果cookie被禁用,那么session会话机制失效
- 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 | 容器 | 容器 | 我们 |