servlet是什么?servlet到底是啥?
#说实话
这个鬼servlet我听说过它好多年了,但是我真的不知道它到底是干啥用的。内心里总觉得这是个很复杂的,绝对是让人难以理解的东西,我真的感觉自己很抗拒它,不想知道,不想去了解。可是我还是不得不去研究下它,因为我想知道Tomcat这个鬼东西,要想知道Tomcat的事,就必须要知道跟Tomcat缠绕在一起的servlet。
今天之前我总觉得这个servlet一定跟http协议 , TCP/IP ,什么应用层,传输层 等这些乱七八糟的,一辈子都搞不懂的破事儿有关系。总把Servlet和太多东西联系起来,以为它是个很复杂的东西。其实不是。
#servlet到底是啥?
既然上面说了servlet不复杂,那servlet到底是啥。 事实上,servlet就是一个Java接口。接口的作用是啥,是规范!
什么网络协议,什么http,什么传输层应用层这些牛鬼蛇神 servlet统统管不着。
servlet这个接口只有5个方法。
servlet接口定义的是一套处理网络请求的规范。
其中最主要的是两个生命周期方法init(),destroy(),还有一个处理请求的service().
所有想要处理网络请求的类,都要回答这3个问题:
1)你初始化时要做什么
2)你销毁时要做什么
3)你接受到请求时要做什么
这是Java给的一种规范
servlet是一个规范,那实现了servlet的类,就能处理请求了么?
不好意思,答案:不能
#是哪儿用到了servlet?
写一个servlet的时候,我没从来不会在servlet中写什么监听8080端口的代码,servlet不会直接和客户端打交道!那请求怎么来到servlet呢?答案是servlet容器,比如我们最常用的Tomcat ,
Tomcat才是与客户直接打交道的家伙,它监听端口,请求过来后,根据URL信息,确定要将请求交给哪个servlet去处理,然后调用那个servlet的service方法,service方法返回一个response对象,Tomcat再把这个response返回给客户端。
参考
https://www.zhihu.com/question/21416727
https://www.zhihu.com/question/21416727/answer/339012081
servlet是什么?servlet到底是啥?的更多相关文章
- javaweb项目jsp跳转servlet Error instantiating servlet class 问题
问题: HTTP Status 500 - Error instantiating servlet class RecommenderServlet type Exception report mes ...
- Servlet过滤器,Servlet过滤器创建和配置
第一:Servlet的过滤器的创建和配置,创建一个过滤器对象需要实现javax.servlet.Filter接口,同时实现Filter的3个方法. 第一方法是过滤器中的init()方法用 ...
- Servlet简介与Servlet和HttpServlet运行的流程
1.Servlet [1] Servlet简介 > Server + let > 意为:运行在服务器端的小程序. > Ser ...
- Java Servlet系列之Servlet生命周期
Servlet生命周期定义了一个Servlet如何被加载.初始化,以及它怎样接收请求.响应请求,提供服务.在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. init()方法 在Se ...
- javaWeb中servlet开发(3)——Servlet生命周期
生命周期:是一个程序的存在周期,servlet由于是受容器的管理,所以容器来决定其生命周期 1.servlet生命周期 2.servlet生命周期对应的方法 3.servlet生命周期代码 publi ...
- Java Servlet(四):Servlet接口service工作(ServletRequest,ServletResponse对象)(jdk7+tomcat7+eclipse)
本篇将会记录,Servlet接收客户端传递来的参数信息,并返回信息使用的对象,及这些对象的函数相关用法. 还是在java ee工程中进行操作,在WebContent目录下创建一个login.jsp文件 ...
- 报错:严重: Servlet.service() for servlet [jsp] in context with path [/20161116-Struts2-6] threw exception [/index.jsp (line: 13, column: 20) No tag "textfiled" defined in tag library imported with prefix
严重: Servlet.service() for servlet [jsp] in context with path [/20161116-Struts2-6] threw exception [ ...
- javaWeb中servlet开发(2)——servlet与表单
1.重写doGet方法 public class InputServlet extends HttpServlet{ public void doGet(HttpServletRequest req, ...
- 报javax.servlet.ServletException: Servlet.init() for servlet springmvc threw exception异常 的解决方案
后台错误信息如下: javax.servlet.ServletException: Servlet.init() for servlet springmvc threw exception org.a ...
- Java Servlet(三):Servlet中ServletConfig对象和ServletContext对象
本文将记录ServletConfig/ServletContext中提供了哪些方法,及方法的用法. ServletConfig是一个抽象接口,它是由Servlet容器使用,在一个servlet对象初始 ...
随机推荐
- 12306 抢票项目霸榜 GitHub,标星即将破万
十一将至,你买到回家的火车票了吗?如果没有,你可以试着打开 GitHub,在搜索栏键入 12306 的关键词,我相信你会发现一个新大陆.没错,这里有 1572 个抢票项目.它们大多用 Python.J ...
- Linux中Nginx中添加自签证书TLS
创建自签证书TLS openssl req \ -newkey rsa: \ -x509 \ -nodes \ -keyout test.com.key \ -new \ -out test.com. ...
- MySQL倒序索引测试2
测试环境 MySQL Community Server 8.0.17 准备测试数据 DROP TABLE TB001; CREATE TABLE TB001(ID INT PRIMARY KEY AU ...
- url请求时,参数中的+在服务器接收时为空格,导致AES加密报出javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher
报错的意思的是使用该种解密方式出入长度应为16bit的倍数,但实际的错误却不是这个,错误原因根本上是因为在http请求是特殊字符编码错误,具体就是base64生成的+号,服务器接收时成了空格,然后导致 ...
- 树莓派安装realvnc_server
先 sudo raspi-config 打开VNC. 然后去realvnc官网去下载raspberry的vncserver 已经ssh连接的前提下可以电脑下载后使用scp命令转移到树莓派上,使用以下命 ...
- xtrabackup 使用
创建具有完全备份所需的最小权限的数据库用户的SQL示例如下 mysql> CREATE USER 'bkpuser'@'%' IDENTIFIED BY 's3cret';mysql> G ...
- Codeforces C Match Points(二分贪心)
题目描述: Match Points time limit per test 2 seconds memory limit per test 256 mega bytes input standard ...
- python 监听键盘输入
import sys, select, tty, termios old_attr = termios.tcgetattr(sys.stdin) tty.setcbreak(sys.stdin.fil ...
- JQuery学习笔记之选择器
JQuery与DOM对象 <div id="test1" class="test2"></div> DOM对象获取方式: var dom ...
- 初识Java(Java数字处理类-大数字运算)
一.大数字运算 在 Java 中提供了大数字的操作类,即 java.math.BigInteger 类与 java.math.BigDecimal 类.这两个类用于高精度计算,体重 BigInteg ...