`
k1121
  • 浏览: 179085 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tomcat静态资源加载

 
阅读更多

         今天在和朋友交流技术时证实了以前一直模糊的一件事。那就是所有经过Tomcat的请求都是有一个servlet来处理的。如果一个请求没有匹配到任何应用指定的servlet,那么就会流到Tomcat的默认的servlet来处理。默认的DefaultServlet是配置在$catalina/conf/web.xml里面的相关servlet配置如下:

<servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
</servlet>

servlet的mapping映射关系如下: 

    <!-- The mapping for the default servlet -->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

 (因为注释太多在此隐去,建议感兴趣的看客可以到$catalina/conf/web.xml目录下看看,很有用的)

     默认情况下,DefaultServlet是映射到根目录的。可能有人会问“<url-pattern>/</url-pattern>”这个和我们应用配置的不会冲突吗?有相关疑问的可以查看以下博文:

http://k1121.iteye.com/blog/1564241

 

       当我们浏览器输入“http://localhost:8080/test.html” 向tomcat容器发送一个静态文件请求时,就会调用tomcat的org.apache.catalina.servlets.DefaultServlet类的doGet()方法进而通过serveResource()等方法取出需要的资源,然后加载进来,并且判断相应的mime类型设置不同的HTTP head,然后输出到页面上。

     

  <!-- ===================== Default MIME Type Mappings =================== -->
  <!-- When serving static resources, Tomcat will automatically generate    -->
  <!-- a "Content-Type" header based on the resource's filename extension,  -->
  <!-- based on these mappings.  Additional mappings can be added here (to  -->
  <!-- apply to all web applications), or in your own application's web.xml -->
  <!-- deployment descriptor.                                               -->

    <mime-mapping>
        <extension>html</extension>
        <mime-type>text/html</mime-type>
    </mime-mapping>

    

 实验:

如果按照以下内容修改$catalina/conf/web.xml中的servlet-mapping: 

    <!-- The mapping for the default servlet -->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.test</url-pattern>
    </servlet-mapping>

 则当我们浏览器输入“http://localhost:8080/test.html” 向tomcat容器发送一个静态文件请求时则会报“HTTP/1.1 404 Not Found”

 

分享到:
评论

相关推荐

    Tomcat无法加载css和js等静态资源文件的解决思路

    在开发和部署基于Java的Web应用时,Tomcat作为常用的Servlet容器,有时会出现无法加载CSS、JavaScript等静态资源的问题。...通过逐个检查和修复这些潜在问题,一般都能成功解决静态资源加载失败的问题。

    tomcat5.0静态化shtml配置.

    以上步骤完成后,Tomcat 5.0将能更好地处理静态资源,特别是SHTML文件,并通过缓存和压缩技术提升网站性能。记得在完成配置后重启Tomcat,以确保改动生效。在实际生产环境中,还可以根据服务器负载和用户需求调整...

    tomcat下webapps防止刷新报错的静态文件

    这是因为Tomcat在更新应用时,会重新加载Web应用目录下的文件,而在这个过程中,静态资源文件如JavaScript、CSS、图片等可能会在短暂的时间内不可用,导致用户请求无法正常处理。这个问题对于开发环境尤其明显,因为...

    Tomcat中对静态资源的处理教程

    Tomcat默认使用`DefaultServlet`来处理静态资源,该Servlet不仅负责静态资源的传输,还支持缓存和断点续传功能,以提高性能和用户体验。 首先,我们来看看Tomcat如何处理静态资源的缓存。资源缓存的设计目的是减少...

    让tomcat自动加载修改过的类和servlet

    例如,对某些静态资源或配置文件的修改可能需要重启服务器才能生效。 3. **错误处理**:如果热部署过程中出现错误,如编译错误或类加载问题,可能会导致应用程序进入不稳定状态,此时可能需要手动干预或重启服务器来...

    框架集合错误解决方案

    Tomcat 静态资源加载错误 **错误现象:** ```plaintext Error starting static Resources java.lang.IllegalArgumentException: Document base D:\Program Files\Apache Software Foundation\Tomcat5.0\webapps\...

    狂神说javaweb实战静态资源.rar

    - Tomcat等Servlet容器默认支持静态资源服务,无需编写额外代码。 - Spring Boot提供自动配置,可以通过`spring.mvc.static-path-pattern`等配置项自定义静态资源路径。 - 使用Filter拦截并处理静态资源请求,如...

    smbms静态资源(超市管理系统)

    【标题】"smbms静态资源(超市管理系统)"指的是一个专门针对超市管理设计的Web应用程序的静态资源部分。在IT行业中,静态资源通常包括HTML、CSS、JavaScript、图片和其他不涉及服务器端动态处理的文件,它们是用户...

    修改Tomcat默认访问根目录的方法

    - reloadable属性:当设置为true时,允许Tomcat在运行时监测在WEB-INF/classes目录和WEB-INF/lib目录下的类文件的改变,如果类文件被更新,应用将自动重新加载。这对于开发阶段非常有用,但会略微降低服务器的性能,...

    Nginx与Tomcat

    Nginx与Tomcat整合的主要目的是实现动静分离,即Nginx负责处理静态资源(如图片、CSS、JavaScript等),而Tomcat负责处理动态请求(如Servlet、JSP)。这样可以充分利用Nginx的高并发能力和Tomcat的动态处理能力,...

    springbootWeb静态资源

    Spring Boot以其简洁、快速的配置方式深受开发者喜爱,对于构建Web应用,它提供了内置的Tomcat服务器,能够方便地处理静态资源请求。 在描述中提到的"springbootWeb静态资源",主要涉及到Spring Boot如何配置和处理...

    JavaWeb项目中springmvc和tomcat对静态文件的处理

    在JavaWeb开发中,Spring MVC和Tomcat服务器都承担着处理静态文件的...开发者可以根据项目的具体需求,选择合适的方式来优化静态资源的加载和处理。在实际开发中,合理配置这些设置可以显著提升应用的性能和用户体验。

    Tomcat的资源文件包

    "haha"可能是Web应用的项目名称,这个WAR文件包含了Web应用的所有静态资源(HTML、CSS、JavaScript),动态内容(JSP页面),以及相关的类文件、库(JAR文件)和其他配置文件。部署到Tomcat时,只需要将此WAR文件...

    tomcat8.0.45压缩包资源

    Tomcat作为Servlet容器,负责加载、执行Servlet并处理与Servlet相关的生命周期管理。 4. **JavaServer Pages (JSP)**:JSP是一种动态网页技术,它将Java代码嵌入到HTML或XML文档中,使得开发者可以在静态内容中插入...

    java静态文件处理

    当请求到达服务器时,如果路径匹配到静态资源,服务器会直接返回该文件,而无需执行任何Java代码。配置Web应用的`web.xml`文件,可以指定静态资源的目录。 2. **使用Spring Boot**:Spring Boot简化了Java Web开发...

    如何清除tomcat缓存

    2. **静态资源缓存**:除了JSP文件外,Tomcat还可能缓存静态资源(如CSS、JavaScript文件等)。这些资源通常被浏览器缓存,而不是由Tomcat缓存。不过,对于Tomcat内部的缓存管理策略,我们同样需要关注。 #### 清除...

    博客项目静态资源.zip

    在企业级开发中,静态资源的管理是至关重要的,因为它影响到用户体验、页面加载速度以及网站的可维护性。 在SpringBoot中,静态资源通常被配置在`src/main/resources/static`目录下,这个目录下的文件会被自动处理...

    tomcat9.0.0.M26

    *符合静态资源 *查看Tomcat更改日志 *加密软件通知 *当其他所有方法都失败 =================== 依赖变化: =================== Tomcat 9.0旨在在Java SE 8及更高版本上运行。 ============== API稳定性: =====...

    Tomcat性能优化

    5. **Web应用配置**:合理配置Web应用的session超时、错误页面、静态资源缓存等,减少服务器负担。 6. **日志优化**:关闭不必要的日志输出,或者配置异步日志,减少日志写入对主线程的影响。 7. **类加载机制**:...

Global site tag (gtag.js) - Google Analytics