最近在学习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. atitit。解决 No suitable Log constructor。。NoClassDefFoundError: org/apache/log4j/Category 找不到类的

    atitit.解决 No suitable Log constructor..NoClassDefFoundError: org/apache/log4j/Category 找不到类的 1. 深的层次 ...

  2. 【原创】关于$test$plusargs和$value$plusargs的小结【SystemVerilog/Verilog】

    [原创]关于$test$plusargs和$value$plusargs的小结 Abtract $test$plusargs和$value$plusargs作为进行Verilog和SystemVeri ...

  3. redis基础之基本键值操作和使用(三)

    前言 redis安装完毕后开始使用redis,先熟悉命令行操作. redis数据的类型 键:redis的所有的键都是string类型: 值:五种类型 string:字符串类型:一个string最大可以 ...

  4. maven使用deploy发布到本地仓库

    使用maven可以方便的开发好的jar包发布到本地仓库中,方便其他项目依赖使用,在pom.xml文件中添加如下的配置: <distributionManagement> <repos ...

  5. C# 改变无边框窗体尺寸大小的方法

    ; ; ; ; ; ; const int HTBOTTOMLEFT = 0x10; ; protected override void WndProc(ref Message m) { switch ...

  6. 一款基于jquery超炫的弹出层提示消息

    今天给大家带来一款基于jquery超炫的弹出层提示消息.这款实例页面初始时,一个go按钮.当单击go按钮时,提示强出层以动画形式出现.效果图如下: 在线预览   源码下载 实现的代码. html代码: ...

  7. Codeforces461A Appleman and Toastman 贪心

    题目大意是Appleman每次将Toastman给他的Ni个数拆分成两部分后再还给Toastman,若Ni == 1则直接丢弃不拆分.而Toastman将每次获得的Mi个数累加起来作为分数,初始时To ...

  8. LeetCode -- 推断链表中是否有环

    思路: 使用两个节点.slow和fast,分别行进1步和2步.假设有相交的情况,slow和fast必定相遇:假设没有相交的情况,那么slow或fast必定有一个为null 相遇时有两种可能:1. 仅仅 ...

  9. xeno 实时性能测试 系统时钟1秒100个tick再测试

    root@sama5d3-linux:/usr/bin ./latency -t0 -T25 -p100                            == Sampling period: ...

  10. 使用shell读取文本文件发送到kafka

    #!/bin/sh ## 参数定义 dt=`date +"%Y%m%d" -d "-1 days"` outpath=/xxxx_log_${dt}.txt b ...