热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于html:什么是Tomcat响应静态资源

Tomcat拜访所有的资源,都是用Servlet来实现的,所以Tomcat又叫Servlet容器,什么都交给Servlet来解决。当然,动态资源也不例外。动态资源能够了解为前端的固定页面,如css,html,js,jpg,png等。对于动态资源,Tomcat最初会交由一个叫做DefaultServlet的类来解决,DefaultServlet解决动态资源的过程就是Tomcat响应动态资源。

Tomcat拜访所有的资源,都是用Servlet来实现的,所以Tomcat又叫Servlet容器,什么都交给Servlet来解决。当然,动态资源也不例外。动态资源能够了解为前端的固定页面,如css,html,js,jpg,png等。对于动态资源,Tomcat最初会交由一个叫做DefaultServlet的类来解决,DefaultServlet解决动态资源的过程就是Tomcat响应动态资源。

代码

  可能你习惯性的关上Tomcat,在部署了一个利用之后,就开始查看其运行后果,或者更多的关注Servlet内的逻辑是否正确。至于动态资源解决这个事,可能未曾注意过。那咱们一起来看看,Tomcat是如何响应动态资源的。

  实质上讲,Tomcat对于所有的动态资源,会做对立解决。也就是在所有你没有配置URL匹配的中央,Tomcat这个全局对立解决的配置就开始接管工作了。那么,假使咱们没有配置这个货色,它怎么失效呢?

  在Tomcat的conf目录下,就是有全局配置文件server.xml在同一个目录下,有一个web.xml,关上它之后,你会发现这样的阐明:

  The default servlet for all web applications, that serves static

  resources. It processes all requests that are not mapped to other

  servlets with servlet mappings.

  再向下,你会看到对于这个全局解决的Servlet申明,也就是解决动态资源的DefaultServlet类。此处,它还有一个名为listings的初始化参数,默认值为false。这个参数次要作用,是在没有welcome文件时,管制利用目录内的文件是否容许列表显示。如果设置为true,就会常见的FTP服务器一样,把利用目录下的文件都列了进去,像上面这个样子。当然,这个款式也是能够自已定义的。

  那么,既然url-pattern配置的是 / ,那不就应该响应所有的申请了么?

  对,咱们下面阐明中也提到了,是匹配所有你没定义的Servlet-mapping的申请。而之所以本人定义的Servlet能够优先失效,则是因为Tomcat内的Servlet配置,是严格依照申明程序初始化,并按此程序响应申请,一层层按此比对,有一个能够响应申请,就用其解决。

  上面咱们来看DefaultServlet中,动态资源响应解决的局部游戏源码,文件位于org.apache.catalina.servlets.DefaultServlet文件中。首先是这个文件,个别资源申请,都会走GET办法。

  protected void doGet(HttpServletRequest request,

  HttpServletResponse response)

  throws IOException, ServletException {

  // Serve the requested resource, including the data content

  serveResource(request, response, true, fileEncoding);

  }

  serveResource这个办法内容较多,放在这里查看不太不便。大抵总结下,首先会判断要申请的资源是否存在,文件是否可读,之后,依据资源的类型,设置响应头的content-type,判断文件的工夫,设置超时工夫等,最终是流的读写。

  整个利用内的资源寄存在resources这个变量内,申明如下:

  /**

  * The complete set of web application resources

  */

  protected transient WebResourceRoot resources = null;

  这块和下面内容有关联的中央是,读取www.cungun.com文件的时候,会判断申请的门路对应的资源是否为一个文件夹,如果是目录,就会判断listings这个参数,为true时才会列出内容,否则间接返回内容找不到,即404。代码如下:

  if (resource.isDirectory()) {

  // Skip directory listings if we have been configured to

  // suppress them

  if (!listings) {

  response.sendError(HttpServletResponse.SC_NOT_FOUND,

  request.getRequestURI());

  return;

  }

  简而言之,Tomcat响应动态资源次要还是依附着DefaultServlet类进行的。只有熟练掌握DefaultServlet类的用法,自然而然也就把握了Tomcat响应动态资源的办法。想要学习更多的Tomcat服务器相干的常识,能够观看本站的Tomcat服务器教程,让咱们相熟Tomcat理论知识的同时,还提供有大量的源码让咱们进行实战演练。


推荐阅读
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 解决IDEA配置xml文件头报错的方法
    本文介绍了解决IDEA配置xml文件头报错的方法,包括了具体的解决方案和步骤。通过本文的指导,读者可以轻松解决这个问题并正常使用IDEA进行开发工作。 ... [详细]
  • mui框架offcanvas侧滑超出部分隐藏无法滚动如何解决
    web前端|js教程off-canvas,部分,超出web前端-js教程mui框架中off-canvas侧滑的一个缺点就是无法出现滚动条,因为它主要用途是设置类似于qq界面的那种格 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • CSS标签、类名和ID选择器的使用区别
    本文讲解了CSS中标签选择器、类名选择器和ID选择器的使用区别,主要包括加空格和不加空格的区别。通过示例代码,说明了加空格表示选择当前节点的后代节点,而不加空格表示一个元素的多个类名不能加空格的规则。 ... [详细]
author-avatar
流丶血的卓洛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有