Java学习之JavaWeb中缺省的Servlet的奥秘
2021/11/18 17:10:21
本文主要是介绍Java学习之JavaWeb中缺省的Servlet的奥秘,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、JavaWeb中的资源
我们都知道,web服务器的作用是对外提供Web资源服务。比如浏览器中看到的一个网页,或者网页中展现的一张图片等,这些都是Web资源。对于Web资源来说,又分为静态资源和动态资源。
1.静态资源
所谓的静态资源,就是固定的Web资源,该资源已经被生成,可以直接拿来存放在服务器上,比如当前服务器的某个Web应用下存放着如下这些静态资源:
Java培训.png" width="136" height="139" style="border-width: initial; border-style: none; vertical-align: top; display: inline-block;">
2.动态资源
由服务器上的java程序动态生成的资源,也就是说,在没有执行java程序时,该资源是不存在的,当程序运行时,由程序动态生成该资源。比如,以下java程序实现了动态生成一个html页面资源。
Java培训.jpg" width="500" height="227" style="border-width: initial; border-style: none; vertical-align: top; display: inline-block;">
3.静态资源和动态资源的区别
从上述对静态资源和动态资源的分析可以看出,静态资源是已经成型的资源,而动态资源是由程序动态生成的,在程序执行前不存在。
二、缺省的Servlet
在JavaWeb知识中,Servlet指的是服务器上的一个小程序,也就是说可以把java程序写在服务器上,供用户访问,而该java程序的载体就是Servlet。那么什么是缺省的servlet呢
1.什么是缺省的Servlet
我们知道当我们在浏览器地址栏中输入url,实际上是在请求某个资源。该资源到底是静态资源还是动态资源呢?要想获得这个问题的答案,我们得先知道web.xml的作用。
Java培训.jpg" width="500" height="211" style="border-width: initial; border-style: none; vertical-align: top; display: inline-block;">
当浏览器地址栏中输入任何的url,都会被web.xml中的servlet-mapping中的url-pattern匹配,当匹配成功后寻找相应的servlet,再通过反射获得该Servlet对象,最后执行该Servlet。详细过程如下图所示:
Java培训.png" width="500" height="156" style="border-width: initial; border-style: none; vertical-align: top; display: inline-block;">
也就是说,浏览器中访问的任何资源,都是要经过web.xml匹配的,那么如果浏览器中访问的资源没有在web.xml的url-pattern中匹配,那么就会去寻找缺省的servlet。
Java培训.jpg" width="500" height="176" style="border-width: initial; border-style: none; vertical-align: top; display: inline-block;">
这段代码配置了一个缺省的Servlet,也就是说,如果在浏览器的url中没有匹配到任何url-pattern,那么就会与配置了"/"的url-pattern进行匹配,并执行该Servlet。
2.起到全局配置作用的web.xml文件
我们发现,在大部分情况下我们不需要配置缺省的Servlet。因为我们直接通过url访问一个服务器上的静态资源时,这个url并不会与url-pattern中的任何一个匹配。但我们也确实访问到了,这是为什么呢?
比如我们当前web应用下的web.xml文件中没有任何url-pattern,但我们却在地址栏里输入:http://localhost:8080/Servlet/1.html,此时能成功的访问到“1.html”静态资源。实际上这是因为,有一个文件帮我们配置了缺省的Servlet,而该缺省的servlet实现的效果,就是把静态资源逐一读取到Java程序中,再讲资源内容写给客户端浏览器。该文件,就是我们说的:起到全局配置作用的web.xml文件,该文件处在服务器的conf文件夹内。
Java培训.png" width="276" height="295" style="border-width: initial; border-style: none; vertical-align: top; display: inline-block;">
全局Web.xml中的缺省Servlet主要完成以下两件事情:
· 根据url,成功找到服务器上的静态资源并读取,再发送给客户端
· 根据url,无法找到服务器上的静态资源,于是发送404页面给客户端
Java培训.jpg" width="500" height="367" style="border-width: initial; border-style: none; vertical-align: top; display: inline-block;">
三、总结
通过上述论述,我们得到了以下几个结论:
· JavaWeb中浏览器访问的任何url,实际上都是在访问服务器上的某个Servlet,因为web.xml中的url-pattern在负责url的匹配
· 如果web.xml中的url-pattern匹配不到任何结果,那么就会去寻找缺省的Servlet,即url-pattern是“/”的Servlet
· 如果在寻找缺省的Servlet时,发现当前Web.xml中没有,于是就会去全局的Web.xml文件中找,找到后执行该Servlet
· JavaWeb中访问的任何资源,都是动态资源。因为都是经过Servlet运行后生成的,即使直接访问静态资源,也是由缺省的Servlet,通过读取静态资源的内容后,再发送给客户端的。
千锋成都Java培训作为国内IT研发人才一体化服务的开拓者,为学生制定合理有序的学习计划,0学费入学,2周免费试听不满意不收费,与学员签订就业协议,坚持良心面授,从千锋Java培训班出去的学员均已高薪就业。千锋推出的免费java视频教程,让学员能够方面的巩固基础技术能力。
这篇关于Java学习之JavaWeb中缺省的Servlet的奥秘的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现