Servlet是什么?
我们平时说的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是什么?相关推荐
- Ajax接收Java异常_java – 处理来自Servlet的Jquery AJAX响应中的异常
我的servlet代码是 try{ //something response.setStatus(201); out.print("Data successfully saved" ...
- JavaEE学习笔记之Servlet
同一用户的不同页面的共享数据 1.1 cookie技术 1.2 sendRedirect()转向 1.3 隐藏表单 1.4 session技术 ###session技术: 当用户打开浏览器,访问某个网 ...
- 【JavaWeb】servlet与http请求协议
Servlet: 概念: server applet (服务端小程序)运行在服务器端的小程序 Servlet就是一个接口,定义了Java类被浏览器访问到(Tomcat识别)的规则. 将我我们自定义一个 ...
- 使用最新版(2020)IntelliJ IDEA 创建Servlet项目
一:选择左上端的File,创建Project,选择创建Web Application 项目: 注:不勾选Create web.xml 二:设置项目名称:helloworld,并创建一个Servlet( ...
- 2020了,还要学JSP嘛?入个门呗!毕竟Servlet亲兄弟~
目录 1.什么是JSP 2.JSP原理 3.JSP基础语法 jsp表达式 jsp脚本片段 jsp声明 jsp注释 4.JSP指令 5.JSP行为 6.9大内置对象 7.EL表达式 格式 变量 [ ]与 ...
- 来谈谈Servlet~~
目录 1.Servlet简介 2.第一个Servlet程序 3.Servlet原理 4.servlet-mapping的配置 5.关于ServletContext 1.共享数据 2.获取初始化参数 3 ...
- 使用Servlet完成单表的CRUD
实现步骤 第一步:准备一张数据库表.(sql脚本) 第二步:准备一套HTML页面(项目原型)[前端开发工具使用HBuilder] 第三步:分析我们这个系统包括哪些功能 第四步:在IDEA当中搭建开发环 ...
- 适配器(GenericServlet)改造Servlet
JavaWeb系列教程 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造Servle ...
- 使用IDEA开发Servlet程序
JavaWeb系列教程,持续更新 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造S ...
- 模拟Servlet本质
JavaWeb系列教程,持续更新 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造S ...
最新文章
- Facebook暂停中国工具类应用广告
- 孰轻孰重:可穿戴式设备的助益与风险
- 为阿里云服务器ECS实例安装Nodejs
- Android之MVP 模式:简单易懂的介绍方式
- mysql root密码过期了_Mac下重置mysql的root密码
- C语言 单链表查找出倒数第,查找单链表倒数第k个元素
- 【华为云技术分享】STM32L476移植华为LiteOS系列教程---开发前的准备 2
- 有没有和我一样从来不和亲戚联系的人?
- 美国Vitamix亮相2017上海AWE,绽放百年料理机品牌魅力
- VS2010 IDE安装问题
- yylabel html不显示图片,YYLabel富文本
- 电脑照片,怎么把电脑照片传到iphone手机 将电脑照片传到iphone方法【图文】
- iOS之一个超赞的视频直播、第三方库,直播看这个就够了,支持RTMP推流,美颜直播
- 使用 Python 全栈打造淘宝客微信机器人
- 开源办公OA开发平台使用说明:用车管理应用
- Unipus读写课程做题工具
- “奇点”临近:2045,人类永生
- 关于emplace_back()的理解
- Waymo van参与亚利桑那州的严重碰撞
- 大数据hadoop与spark研究——1 spark环境搭建