问题
- 为什么servlet创建的时候不创建独立运行的,反而要放到容器里
解答
总览
- 首先要明白servlet是用来干嘛的,他是用来处理http请求和响应的,而且是基于早起静态页面而发展过来的
- 计算机界有句话是不要重复造轮子
- 本身底层的网络通信和线程管理就已经有了,没必要再套用一份,只是要完善处理http请求和响应这一块就行了
独立运行需要什么
- 假设servlet要独立运行,那么不仅需要写处理http请求和响应方面的,还需要实现以下功能:
- 接收 TCP 连接 / 建立 HTTP 协议
- 解析 HTTP 请求和封装对象
- 创建线程处理请求
- 生命周期管理(init, destroy)
- 会话管理(Session)
- 安全控制(认证、授权)
- 热部署和资源管理
写成接口的好处
- 遵循JavaEE的规范,有良好的移植性(JavaEE有良好的移植性,作为他的组件自然也有)
- 一个容器可以调用使用多个servlet
- 写的业务代码就可以 更专注、轻量、可维护(因为其他功能,容器本身就有
类比一下
Servlet 就像是一个厨师,你让他“单独运行”还得自建厨房、通煤气、配菜、招服务员…… 不如让他在一个专业的餐厅厨房(Servlet 容器)里工作,啥都有,你就专心做菜(业务逻辑)