我们平时说的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. Facebook暂停中国工具类应用广告
  2. 孰轻孰重:可穿戴式设备的助益与风险
  3. 为阿里云服务器ECS实例安装Nodejs
  4. Android之MVP 模式:简单易懂的介绍方式
  5. mysql root密码过期了_Mac下重置mysql的root密码
  6. C语言 单链表查找出倒数第,查找单链表倒数第k个元素
  7. 【华为云技术分享】STM32L476移植华为LiteOS系列教程---开发前的准备 2
  8. 有没有和我一样从来不和亲戚联系的人?
  9. 美国Vitamix亮相2017上海AWE,绽放百年料理机品牌魅力
  10. VS2010 IDE安装问题
  11. yylabel html不显示图片,YYLabel富文本
  12. 电脑照片,怎么把电脑照片传到iphone手机 将电脑照片传到iphone方法【图文】
  13. iOS之一个超赞的视频直播、第三方库,直播看这个就够了,支持RTMP推流,美颜直播
  14. 使用 Python 全栈打造淘宝客微信机器人
  15. 开源办公OA开发平台使用说明:用车管理应用
  16. Unipus读写课程做题工具
  17. “奇点”临近:2045,人类永生
  18. 关于emplace_back()的理解
  19. Waymo van参与亚利桑那州的严重碰撞
  20. 大数据hadoop与spark研究——1 spark环境搭建

热门文章

  1. WPF中的TreeView选中指定节点
  2. wdcp 安装及问题解决
  3. 万达电商CEO董策离职
  4. 获取电脑桌面上图标的信息
  5. 鸿蒙不支持手机,阻碍鸿蒙2.0上不了手机的问题找到了,别再埋怨华为
  6. “软件狂”:梁肇新的成长之路(转载)
  7. 软件开发团队在苹果iPhone上日进千金
  8. 负载均衡器技术Nginx和F5的优缺点对比
  9. osg学习(二十八)有关kml和kmz
  10. 狂风暴雨——风云突变篇:基于数据流层Namsara的ERP系统架构描述