最近在学习servlet的时候发现自己不能访问到css和js, 于是google一番学到不少方法加载,总结如下:

1.对于Spring MVC, 由于我们截获了所有请求<url-pattern>/</url-pattern>,也就包括了对css访问的请求,所以Spring提供了加载静态资源标签<mvc:resources mapping="/style/**" location="/style/"/>,如此我们就可以直接用url直接访问资源文件。

2.我们还可以采用default servlet mapping来截获请求,访问我们目标资源,这里又有一些知识得分享,那就是mapping的优先级

从高到低 >Exact match (like /style/a.css )

>Path match (like /style/*)

>Extension match (like /*.jsp)

所以我们可以添加一个

<servlet-mapping>

<servlet-name>default</servlet-name></p>

<url-pattern>/css/*</url-pattern></p>

</servlet-mapping>

通过这个Mapping来截获请求,让静态资源得以访问.

3. 第三种方式是添加一个Filter ,在请求达到或离开servlet之前进行一些处理,所以我们可以过滤掉关于静态资源的请求

<filter>

<filter-name>resource</filter-name>

<filter-class>com.thought.Filter</filter-class>

</filter>

<filter-mapping>

<filter-name>resource</filter-name>

<url-pattern> /*</filter-mapping>

</filter-mapping>

然后实现doFilter()方法

String uri = ((HttpServletRequest) request).getRequestURI();

if (uri.startsWith("/css")) {

chain.doFilter(request, response); // Goes to container's default servlet.

} else {

request.getRequestDispatcher("/" + uri).forward(request, response);

}

这样就可以跳过对静态资源的请求截获了。

4.在得到祁兮同志的建议后,加上我的实验,在spring3.0后又有一种方法来截获静态文件:

在配置文件中添加 <mvc:default-servlet-handler/>

在springMVC-servlet.xml中配置后,会在Spring MVC上下文中定一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。

一般Web应用服务器默认的Servlet名称是"default",因此DefaultServletHttpRequestHandler可以找到它。

希望对大家能有帮助,谢谢

Spring MVC静态资源访问的更多相关文章

  1. 7.Spring MVC静态资源访问

    在SpringMVC中常用的就是Controller与View.但是我们常常会需要访问静态资源,如html,js,css,image等. 默认的访问的URL都会被DispatcherServlet所拦 ...

  2. spring mvc静态资源访问的配置

    如果我们使用spring mvc来做web访问请求的控制转发,那么默认所有访问都将被DispatcherServlet独裁统治.比如我现在想访问的欢迎页index.html根本无需任何业务逻辑处理,仅 ...

  3. spring mvc 静态资源 404问题

    spring mvc 静态资源 404问题 在web.xml配置servlet-mapping的时候,如果url-pattern设置为"/" (如下),很多人都会遇到导入js,cs ...

  4. Spring MVC静态资源处理——<mvc:resources /> ||<mvc:default-servlet-handler /> 转载

    Spring MVC静态资源处理——<mvc:resources /> ||<mvc:default-servlet-handler /> mvcmvc:resources  ...

  5. Spring Boot 静态资源访问原理解析

    一.前言 springboot配置静态资源方式是多种多样,接下来我会介绍其中几种方式,并解析一下其中的原理. 二.使用properties属性进行配置 应该说 spring.mvc.static-pa ...

  6. spring mvc静态资源请求和<mvc:annotation-driven>

    自己看了官方文档,也到网上查了下,目前理解如下: <mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping和Annotat ...

  7. Spring MVC静态资源处理

    优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...

  8. Spring MVC静态资源处理(转)

    优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...

  9. Spring MVC静态资源处理(在applicationContex.xml文件中进行配置)

    优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...

随机推荐

  1. [Informix] unload load

    select tabname from systables where tabname  like 'aa%' select * from syscolumns where tabname like ...

  2. C数组逆序

    一.标准交换模式 /**** *标准交换模式 *实现数组的逆序,原理就是数组的首尾元素进行交换 ***/ #define N 5; int main(){ int array[N] = {15,20, ...

  3. OpenCV2马拉松第24圈——轮廓提取

    计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/27979267 收入囊中 在图片中找到轮廓而且描绘 ...

  4. Android系统应用信息中存储和缓存的计算方法

    进行例如以下操作: 设置->应用->选择一个应用->应用信息 会到达例如以下界面: 能够看到这个应用占用的磁盘空间. 先说结果,这几项会计算哪些文件(夹). 1.应用,由三项相加组成 ...

  5. UIView总结

    转自:http://langhua9527.iteye.com/blog/1377741 如果想调用某个类的某个方法可以写成这样,这个方法来自NSObject类 performSelector: pe ...

  6. CGameConfig类

    #ifndef __GAMECONFIG_H__ #define __GAMECONFIG_H__ #include "GameFrameHead.h" #include &quo ...

  7. jq使用自定义属性实现有title的tab切换

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  8. C#大小写字母转换函数

    ToUpper:小写转大写ToLower:大写转小写 例如: string A="aasiDi778=AA"; string B=""; B=A.ToUpper ...

  9. CSS学习笔记(4)--选择器(w3school)

    CSS3 选择器 在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素. "CSS" 列指示该属性是在哪个 CSS 版本中定义的.(CSS1.CSS2 还是 CSS3.) ...

  10. 基于HTML5 Canvas 实现的 Loading 效果

    Sonic.js 是一个很小的 JavaScript 类,用于创建基于 HTML5 画布的加载图像.更强大的是 Sonic.js 还提供了基于现成的例子的创建工具,可以帮助你实现更多自定义的(Load ...