我们平时说的Servlet看上去很神秘,其实本质很简单,
先说结论: Servlet就是一个Java接口interface而已。

那servlet是干嘛的?很简单,接口的作用是什么?规范呗!

servlet接口定义的是一套处理网络请求的规范,所有实现servlet的类,都需要实现它那五个方法,

其中最主要的是两个生命周期方法 init()和destroy(),还有一个处理请求的service(),
也就是说,所有实现servlet接口的类,或者说,所有想要处理网络请求的类,都需要回答这三个问题:

  • 你初始化时要做什么
    -你销毁时要做什么
  • 你接受到请求时要做什么

这是Java给的一种规范!就像阿西莫夫的机器人三大定律、行尸走肉里Rick的那三个问题一样,规范!

servlet是一个规范,那实现了servlet的类,就能处理请求了吗?

答案是,不能

你可以随便谷歌一个servlet的hello world教程,里面都会让你写一个servlet,
相信我,你从来不会在servlet中写什么监听8080端口的代码servlet不会直接和客户端打交道

那请求怎么来到servlet呢?

答案是servlet容器,比如我们最常用的tomcat,

同样,你可以随便谷歌一个servlet的hello world教程,里面肯定会让你把servlet部署到一个容器中,不然你的servlet压根不会起作用。

tomcat才是与客户端直接打交道的家伙,他监听了端口,请求过来后,根据url等信息,确定要将请求交给哪个servlet去处理,然后调用那个servlet的service方法,service方法返回一个response对象,tomcat再把这个response返回给客户端。

比如:一个简单的自己实现的Servlet(不管请求是什么都返回404)

class TeacherServlet implements Servlet{@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {OutputStream out = res.getOutputStream();out.write(("HTTP/1.1 404 Not Found\r\n" +"Content-Type: text/plain\r\n" +"Content-length: 10\r\n\r\n" +"Not Found").getBytes());}@Overridepublic void init(ServletConfig config) throws ServletException {}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {}
}

自己实现的Servlet容器:相当于Tomcat,jetty…

ServerSocket ss = new ServerSocket();//创建服务器
Socket socket = ss.accept();//监听客户端连接
/* 读取客户端数据.............
*/
OutputStream soutput = socket.getOutputStream();
Servlet servlet = new TeacherServlet();
ServletResponse res = new ServletResponse(soutput);
servlet.service(null, res);
res.end();

所以Servlet的本质就是:

为java程序提供一个统一的web应用的规范。

参考:
https://www.zhihu.com/question/21416727
https://zhuanlan.zhihu.com/p/34518314

Servlet是什么?相关推荐

  1. Ajax接收Java异常_java – 处理来自Servlet的Jquery AJAX响应中的异常

    我的servlet代码是 try{ //something response.setStatus(201); out.print("Data successfully saved" ...

  2. JavaEE学习笔记之Servlet

    同一用户的不同页面的共享数据 1.1 cookie技术 1.2 sendRedirect()转向 1.3 隐藏表单 1.4 session技术 ###session技术: 当用户打开浏览器,访问某个网 ...

  3. 【JavaWeb】servlet与http请求协议

    Servlet: 概念: server applet (服务端小程序)运行在服务器端的小程序 Servlet就是一个接口,定义了Java类被浏览器访问到(Tomcat识别)的规则. 将我我们自定义一个 ...

  4. 使用最新版(2020)IntelliJ IDEA 创建Servlet项目

    一:选择左上端的File,创建Project,选择创建Web Application 项目: 注:不勾选Create web.xml 二:设置项目名称:helloworld,并创建一个Servlet( ...

  5. 2020了,还要学JSP嘛?入个门呗!毕竟Servlet亲兄弟~

    目录 1.什么是JSP 2.JSP原理 3.JSP基础语法 jsp表达式 jsp脚本片段 jsp声明 jsp注释 4.JSP指令 5.JSP行为 6.9大内置对象 7.EL表达式 格式 变量 [ ]与 ...

  6. 来谈谈Servlet~~

    目录 1.Servlet简介 2.第一个Servlet程序 3.Servlet原理 4.servlet-mapping的配置 5.关于ServletContext 1.共享数据 2.获取初始化参数 3 ...

  7. 使用Servlet完成单表的CRUD

    实现步骤 第一步:准备一张数据库表.(sql脚本) 第二步:准备一套HTML页面(项目原型)[前端开发工具使用HBuilder] 第三步:分析我们这个系统包括哪些功能 第四步:在IDEA当中搭建开发环 ...

  8. 适配器(GenericServlet)改造Servlet

    JavaWeb系列教程 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造Servle ...

  9. 使用IDEA开发Servlet程序

    JavaWeb系列教程,持续更新 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造S ...

  10. 模拟Servlet本质

    JavaWeb系列教程,持续更新 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造S ...

最新文章

  1. Squid安装与配置
  2. Office SharePoint Server 2007 中的 Workflow
  3. 洛谷——P1311 选择客栈
  4. 【MyBatis框架】查询缓存-二级缓存原理
  5. 为什么我的文章总是没人回复
  6. 苹果Mac强大的代码编辑器:Nova
  7. 数据结构与算法之树的进阶
  8. 透过 ASP.NET 和数据库读写图片
  9. pyltp的使用教程
  10. 如鹏网.Net基础2 第六章:MYSQL
  11. RStudio常用快捷键
  12. mysql 交换 表分区_mysql分区表分区数据和普通表交换
  13. TAM: TEMPORAL ADAPTIVE MODULE FOR VIDEO RECOGNITION ∗
  14. 高端大气通用企业介绍PPT模板-优页文档
  15. dalsa工业相机8k参数_dalsa线阵相机Linea系列2K4K8K
  16. 一位中科院自动化研究所博士的毕业论文致谢:求学22载,计算机终成一生的事业与希望...
  17. 公司实际控制人和控制人的计算(内容在不断完善中。。。)
  18. 高压功率放大器ATA4051VS高压功率放大器HSA4051
  19. 诗歌五 增广贤文(古人不见今时月,今月曾经照古人)
  20. springboot集成SpringJDBC单数据源(一)

热门文章

  1. 本地电脑与远程服务器之间无法复制粘贴解决方法
  2. Android面试问答
  3. C语言为什么不能移植,C语言有可移植性强和可读性好等优点,而汇编语言的高效、快速等优点又是C语言所难以达...
  4. 虚拟机命令里面的光标不动了怎么办_Linux 11个炫酷的终端命令!你知道几个?
  5. 全志JAVA_全志a13开发总结
  6. 美拍爬虫逆向js解析实战
  7. 一款超牛逼的神仙级接私活软件!吊到不行
  8. 计算机网络中的各种攻击
  9. 火山引擎联合中国信通院发布《边缘云总体技术与测试要求》
  10. 强大的pdf压缩工具——Smallpdf