没了解过这些,都不好意思说学过Servlet
一.话分两头
今天博主给大家带来一波内核很充足的acticle,奥里给!(日常傻屌…)
想必不少同道中猿已经用过Servlet,抑或是说轻松驾驭Servlet如同老司机开车–稳如老狗.
那么大家对于底层servlet的具体实现有过了解吗 也许你知道Servlet有Http协议和非Http协议两种,或者说继承子HttpServlet 继承doGet()/doPost(),emmm 笔者认为还远远不够 至少你还得看看具体父类方法的实现
二.兵分三路
正如二级标题寓意那样我们日常操作的servlet来自三个爷爷类:
ServletConfig Servlet Serializable
- 序列化接口: 这个很容易想到,毕竟Serlvet是为了Web服务,而网页数据和客户端的交互之间的数据传输在所难免
- Servlet和ServletConfig 这两个并不是自定义servlet的的直接父类
他有一个自己的家谱(博主亲自整理的哦!):
仔细一看,才发现我们熟知的Servlet竟是如此的不简单.注意我只是把最主要的方法描述出来,事实上还有很多共有的方法就不一一罗列了(不可以说我懒…)
今天我们主要探讨ServletConfig类和ServletContext类的方法:为什么要单独提这两个,细心的你或许已经发现这两个类有相同的方法:getInitParamer(String name)
虽然他们有幸同名,却不能共度余生.
- ServletConfig 中的param方法(简称,懒癌晚期QAQ) 他是针对于当前servlet 容器换句话说:就是仅仅存在于你定义的那个Servlet类中.因此的它的初始化在web.xml中自然存在于servlet里:
运行结果:
doget方法
WebServletConfig中的getInitParmaer()方法
而ServeletContext里的param方法存在于全局web容器里,随处可以调用:
System.out.println(super.getServletContext().getInitParameter("servletContext"));
初始化:
结果若我们所想
- 此外我们还可以发现SerlvetContext还有几个常用的方法
getContextPath()
:获得相对路径getRealPath()
: 获得绝对路径
由此观之,熟悉底层原理,不仅开拓各位的视野,也能我们所掌握的技术能够深入了解,这样即便以后遇到什么难题,我们可以根据它的底层方法实现去一步步探究.
三.未完待续
下一篇: 深入Servlet—(二) 浴火重生
喜欢的朋友,点个关注再走吧😁