javaweb中静态文件的处理方法

方案一:激活Tomcat的defaultServlet来处理静态文件

  在web.xml中添加:

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>    

  说明:要写在DispatcherServlet的前面, 让 defaultServlet先拦截请求,这样请求就不会进入Spring了,我想性能是最好的吧。

    Tomcat, Jetty, JBoss, and GlassFish 自带的默认Servlet的名字 -- "default"
    Google App Engine 自带的 默认Servlet的名字 -- "_ah_default"
    Resin 自带的 默认Servlet的名字 -- "resin-file"
    WebLogic 自带的 默认Servlet的名字 -- "FileServlet"
    WebSphere 自带的 默认Servlet的名字 -- "SimpleFileServlet"

方案二: 在spring3.0.4以后版本提供了mvc:resources ,  使用方法:

<!-- 对静态资源文件的访问 -->
<mvc:resources mapping="/images/**" location="/images/" />  

  说明:/images/**映射到ResourceHttpRequestHandler进行处理,location指定静态资源的位置.可以是web application根目录下、jar包里面,这样可以把静态资源压缩到jar包中。cache-period 可以使得静态资源进行web cache

方案三 ,使用<mvc:default-servlet-handler/>

<mvc:default-servlet-handler/>  

  会把"/**" url,注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler处理并返回.
DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet.

  

补充说明:多个HandlerMapping的执行顺序问题:

DefaultAnnotationHandlerMapping的order属性值是:0
<mvc:resources/ >自动注册的 SimpleUrlHandlerMapping的order属性值是: 2147483646

<mvc:default-servlet-handler/>自动注册 的SimpleUrlHandlerMapping 的order属性值是: 2147483647

spring会先执行order值比较小的。当访问一个a.jpg图片文件时,先通过 DefaultAnnotationHandlerMapping 来找处理器,一定是找不到的,因为我们没有叫a.jpg的Action。然后再按order值升序找,由于最后一个 SimpleUrlHandlerMapping 是匹配 "/**"的,所以一定会匹配上,就可以响应图片。

访问一个图片,还要走层层匹配。不知性能如何?

最后再说明一下,方案二、方案三 在访问静态资源时,如果有匹配的(近似)总拦截器,就会走拦截器。如果你在拦截中实现权限检查,要注意过滤这些对静态文件的请求。

如何你的DispatcherServlet拦截 *.do这样的URL后缀,就不存上述问题了。还是有后缀方便。

javaweb中静态文件的处理方法

时间: 2024-10-13 12:57:18

javaweb中静态文件的处理方法的相关文章

Django中,图片显示问题--Django中静态文件处理方法指南

html网页中要显示一张JPG图片,可是怎么放都是显示不了. 后来搞明白,这个涉及静态文件的处理方法. 在urls.py中添加一行: urlpatterns = patterns('', (r'^site_media/(?P<path>.*)','django.views.static.serve',{'document_root':'E:/media'}), }然后在html页面中,写入 <p><img src="/site_media/gmshi.jpg&quo

javaWeb中的文件上传下载

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,stru

ASP.NET5 中静态文件的各种使用方式

所谓静态文件,包含HTML文件,css文件.图片文件和js文件等,他们是服务器直接读取到客户端的一些资源,在这篇文章中,我们将解释关于ASP.NET5和静态文件的一些内容. 服务端的静态文件 默认情况下,静态文件被存放在项目的wwwroot目录下,而wwwroot的地址被定义在project.json文件中: { "webroot": "wwwroot", ... } 静态文件被存储在wwwroot下的任何目录中,它被客户端以相对路径的方式访问,例如,当你在Visu

JavaWeb中读取文件资源的路径问题 -- 转自新浪博客

在做javaweb开发的时候,我们可能会需要从本地硬盘上读取某一个文件资源,或者修改某一个文件,这个时候就需要先找到这个文件,然后用FileInputStrem等文件字节.字符流来将这个文件读取到内存中,再对其进行修改等的操作.那么在找这个文件的过程中就涉及到一个路径的问题--->怎么正确的找到这个文件呢? 有两种可行的方法:一.绝对硬盘路径:二.相对路径..来来来,我们掰扯一下这两种方法的不同------- 一.硬盘绝对路径 如图,我的E盘下面有个path文件夹,里面有一个1.txt的文件,,

JavaWeb中读取文件资源的路径问题

在做javaweb开发的时候,我们可能会需要从本地硬盘上读取某一个文件资源,或者修改某一个文件,这个时候就需要先找到这个文件,然后用FileInputStrem等文件字节.字符流来将这个文件读取到内存中,再对其进行修改等的操作.那么在找这个文件的过程中就涉及到一个路径的问题--->怎么正确的找到这个文件呢? 有两种可行的方法:一.绝对硬盘路径:二.相对路径..来来来,我们掰扯一下这两种方法的不同------- 一.硬盘绝对路径 如图,我的E盘下面有个path文件夹,里面有一个1.txt的文件,,

Java中静态关键字的使用方法介绍三

1.1      静态方法main()的解析 1.1.1   静态方法main()的语句组成 在我们使用java语言进行编程中,常常用到要一个main()函数,这是一个程序的入口,是整个程序中最为重要的部分之一.通常,main函数按照以下格式进行书写. public static void main(String[] args) { } 我们发现main()函数前面存在静态修饰符Static那说明main函数就是一个静态方法.那么这个main函数语句到底由什么组成呢?下面我们就来分析一下main

Java中静态关键字的使用方法介绍四

1         静态代码块 下面介绍一种不是很常见的静态修饰符的使用方法.当我们需要一个类,这个类的构造函数是私有的,那么这个类之外其他程序就不能够创建这个类的对象.那么如何初始化这个类呢? 为了解决这个问题,我们可以使用前文中的静态成员变量或者静态方法来初始化类.在类的加载过程中,静态成员变量和静态方法同时也就加载完成了.除了上面的两种方法还有一种更加简单的方法,就是在类中使用静态代码块.静态代码块不是一个方法,它的写法很简单,如下: public class Car {         

JavaWeb中的文件上传和下载功能的内容就这么多

一.开发环境搭建 创建一个FileUploadAndDownLoad项目,加入Apache的commons-fileupload文件上传组件的相关Jar包,如下图所示: 二.实现文件上传 2.1.文件上传页面和消息提示页面 upload.jsp页面的代码如下: 1<%@ page language="java" pageEncoding="UTF-8"%> 2<!DOCTYPE HTML> 3<html> 4<head>

iOS开发中获取文件路径的方法介绍

1.首先要知道什么是沙盒? 沙盒就是每一个应用程序安装完毕之后在本地生成的一个文件夹,就叫做沙盒文件.下面是沙盒的一个路径展示: 可以看到: iphone沙箱模型的有四个文件夹,分别是什么,永久数据存储一般放在什么位置,得到模拟器的路径的简单方式是什么?下面就详细的一一道来: 分别是:documents,tmp,app,Library. 而获取APP的沙盒的函数是:(NSHomeDirectory(), 手动保存的文件在documents文件里 Nsuserdefaults保存的文件在Prefe