《深入拆解Tomcat&Jetty》—— Servlet基础
我我我四月份没有写,然后五月份收获了好多个关注……(前后并没有什么因果关系)十分内疚。因为开年来入手了个好用的大纲笔记本,所以markdown没有那么迷人也是很懒了。
吴军老师说的对:大声展示你的计划,然后就会因为不想flag倒下而挣扎向前!(吴军老师并没有说过!!!
文章目录
1、Web 容器的由来
简单糊了个图,but糊完之后发现光看图好像也不是很清楚,哦耶~
一千年以前,要求很简单,只需要能浏览就可以,所以服务端只需要根据浏览器发出的请求找到对应的静态网页HTML,并传回去就可以。
后来客户孤独了,想要有来有往有交互,这就需要服务端根据交互内容做出对应的响应,要让HTTP服务器调用服务端程序。sun公司推出了Servlet技术,Servlet相当于运行在服务段得Java小程序,但是没有main方法,不能独立运行,需要部署到Servlet容器中,找个妈来管着它。Tomcat和Jetty就是Servlet容器(娃它妈)。
原文说的是:为了方便使用,所以娃它妈也具有HTTP服务器的功能。
2、HTTP必知必会
因为Tomcat和Jetty也要干以前HTTP服务器的活儿,先来搂一下一个完整的HTTP请求过程。
总结一下:
- 处理连接请求
- 根据协议拆包打包
- 处理请求内容
2.1、Cookie和Session
HTTP协议是无状态的,在需要记录用户状态的场景中,以前的做法是在用户验证后,将每次请求都需要传递的登录信息保存在客户端本地,也就是Cookie。Cookie是HTTP报文的一个请求头,Web应用可以将用户的标志信息等存储在Cookie中,这样服务器每次读取Cookie就知道用户状态。
因为Cookie是明文存储,而且往往带有用户信息,所以存在很大的安全隐患。
Session转换思路,将信息存储在服务端,把用来匹配session的id交给用户。
3、servlet规范和servlet容器
前面提到的要实现动态交互就需要HTTP服务器调用后台程序来处理请求,如果在HTTP服务中处理调用哪个类的哪个方法,就会跟业务逻辑紧密耦合。
servlet容器:解决调用哪个类。用来加载和管理业务类。
servlet接口:解决调用哪个方法
servlet接口和servlet容器这一整套规范称作servlet规范。
3.1、servlet接口
public interface Servlet {
/** servlet调用 */
void service(ServletRequest req, ServletResponse res)throws ServletException, IOException;
/** servlet配置*/
String getServletInfo();
ServletConfig getServletConfig();
/** servlet管理 */
void destroy();
void init(ServletConfig config) throws ServletException;
}
3.2、servlet容器
工作流程:
我们通常是以web应用程序的方式来部署servlet的。servlet规范约定了web应用程序的目录结构
| - MyWebApp
| - WEB-INF/web.xml -- 配置文件,用来配置 Servlet 等
| - WEB-INF/lib/ -- 存放 Web 应用所需各种 JAR 包
| - WEB-INF/classes/ -- 存放你的应用类,比如 Servlet 类
| - META-INF/ -- 目录存放工程的一些信息
3.3、扩展机制
servlet规范提供了两种扩展机制:
Filter:干预过程。允许对请求和响应做一些统一的定制化处理。
Listener:基于状态。可以感兴趣的事件进行监听。
上一篇: 荐 遇到电脑死机,最全解决方案来啦
下一篇: python各种编辑器、APP、软件下载