`

spring过滤器问题

阅读更多

用 Spring 开发应用程序,对于初学者有一个很头疼的问题,那就是程序数据都已经查询出来了,但界面样式仍然十分丑陋,加载不了 css,js,图片等资源文件。当你在浏览器上直接输入某个css文件的路径时,直接得到404错误,而路径肯定没有错,其原因就在于在web.xml 中配置了类似如下的 spring servlet:

程序代码 程序代码

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>


请注意  <url-pattern>/</url-pattern> 这表示这个servlet 拦截了所有的请求,包括css,js等。所以出现上面描述的情况。如何解决这个css,js等路径问题呢,有如下几种解决方案.

1. 使用spring mvc resource 去读取静态文件
比如在 WEN-INF 下建立static 文件夹,并在 static 文件夹里面建立css 文件夹,然后建立 1.css  文件.
修改 mvc-dispatcher-servlet.xml 文件

程序代码 程序代码

<mvc:resources mapping="/static/**" location="/WEB-INF/static/"/>


这样配置之后,可以通过 http://your-ip:port/your-app/static/css/1.css 直接访问了。

2. 采用 default servlet 
在 web.xml  里面配置

程序代码 程序代码

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/static/*</url-pattern>
</servlet-mapping>


这样做了之后,所有前缀为static 的请求都交给default servlet 去处理。如果你请求  http://your-ip:port/your-app/static/css/1.css ,就表示在 webcontent 目录下的css文件夹下的1.css文件。

3. 通过文件扩展名进行处理 
在 web.xml 里面配置

程序代码 程序代码

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



4. 对spring servlet 不用restful 风格。在url 上加上前缀 

程序代码 程序代码

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>/app</url-pattern> 
</servlet-mapping>


这样做的目的是让 dispatchservlet 去拦截以/app 开头的那些 URL,并不拦截css,js等。

5. 对spring servlet 不用restful 风格。在url 上加上后缀 

程序代码 程序代码

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>*.do</url-pattern> 
</servlet-mapping>


这样做的目的是让 dispatchservlet 只拦截*.do 的url. 并不拦截css,js等。

上面介绍的5种方法,根据情况自己任意选择一种,现在没办法说那种好,那种方法不好,都有可取之处,用在不同的场景而已。 

分享到:
评论

相关推荐

    Spring 各种过滤器配置大全

    FilterChainProxy会按顺序来调用这些filter,使这些filter能享用Spring Ioc的功能, CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON 定义url比较前先转为小写 PATTERN_TYPE_APACHE_ANT 定义使用Apache ant的匹配模式

    spring-boot 过滤器 filter

    总结,Spring Boot的过滤器机制提供了强大的请求处理能力,开发者可以根据需求创建并配置过滤器,实现各种定制化的操作。通过合理利用过滤器,可以提升应用的安全性、性能和用户体验。在实际开发中,应根据具体场景...

    spring security 4 小例子带自定义过滤器

    在Spring Security 4中,我们可以通过自定义过滤器来扩展其功能,以满足特定的安全需求。在这个小例子中,我们将探讨如何创建并集成自定义过滤器,以及它在Spring Security中的工作原理。 首先,我们需要理解Spring...

    springcloud getaway 全局过滤器.doc

    本文将深入探讨如何在Spring Cloud Gateway中自定义全局过滤器。 首先,我们需要了解Spring Cloud Gateway的基本架构。Gateway基于Spring Framework 5、Project Reactor和Spring WebFlux构建,它提供了一种高效且...

    spring+security+11种过滤器介绍.doc

    1. HttpSessionContextIntegrationFilter:这是Spring Security过滤器链的第一个过滤器。它的主要职责是确保每个线程都有一个SecurityContext实例,这个实例存储了当前用户的认证信息。当请求到达时,它检查session...

    spring过滤器

    本篇将深入探讨"Spring过滤器",以及如何利用它来实现网站的过滤功能。 首先,过滤器是Java Servlet规范的一部分,用于在请求被Servlet处理之前或之后执行一些预处理或后处理操作。在Spring框架中,我们通常使用...

    全面解析Spring Security 过滤器链的机制和特性

    Spring Security 过滤器链机制和特性详解 Spring Security 过滤器链是 Spring Security 框架中的一种核心机制,负责处理 HTTP 请求的安全验证和授权。今天,我们将深入探讨 Spring Security 过滤器链的机制和特性,...

    spring mvc过滤器实现

    spring mvc 过滤器,实现url过滤,权限模块经常用到的,很不错

    过滤器 spring4.1+jdk1.8版本

    本资源提供了基于Spring 4.1和Java 8 (JDK1.8) 的过滤器实现,包括必要的jar包和实例代码,这对于理解如何在实际项目中使用过滤器具有很高的参考价值。 首先,我们需要了解过滤器的基本工作原理。过滤器是实现了 ...

    关于ip的过滤器 spring security例子

    本文将深入探讨如何在Spring Security中实现IP过滤器,以便控制访问应用的客户端IP地址。 首先,我们需要理解Spring Security的基本架构。它是一个多层次的组件模型,其中包括认证、授权和会话管理等核心功能。在...

    SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系

    在Java Web开发中,Spring MVC框架提供了两种机制来处理请求:拦截器(Interceptor)和过滤器(Filter)。它们都是在请求被控制器处理之前和之后执行的一系列预处理和后处理操作,但它们在功能、使用场景和工作原理...

    过滤器 spring4.1+jdk1.7版本

    在这个"过滤器 spring4.1+jdk1.7版本"的压缩包中,我们关注的是如何在Spring 4.1框架下利用过滤器功能,以及与Java 7(JDK 1.7)的兼容性。 1. **过滤器基础**: 过滤器在Java Web应用中主要用来拦截和处理HTTP...

    springcloud gateway 全局过滤器统一签名判定.doc

    在Spring Cloud Gateway中,全局过滤器(Global Filter)是一种强大的机制,用于在请求路由到具体的服务之前或之后执行通用的处理逻辑。在这个场景中,我们关注的是如何利用全局过滤器来实现统一的签名验证,这在...

    spring过滤器大全 代码

    FilterChainProxy会按顺序来调用这些filter,使这些filter能享用Spring Ioc的功能, CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON 定义url比较前先转为小写 PATTERN_TYPE_APACHE_ANT 定义使用Apache ant的匹配模式

    21. Spring Boot过滤器、监听器【从零开始学Spring Boot】

    在Spring Boot框架中,过滤器(Filter)和监听器(Listener)是两个非常重要的概念,它们可以帮助我们实现一些自定义的处理逻辑,如数据校验、日志记录、请求拦截等。下面将详细讲解这两个概念及其在实际开发中的...

    Java SpringBoot实现的过滤器(和拦截器)控制登录页面跳转

    本项目主要关注的是如何使用过滤器(Filter)和拦截器(Interceptor)来实现登录页面的控制与跳转。以下是对这些知识点的详细说明: 1. **SpringBoot**: SpringBoot是Spring框架的一个子项目,旨在简化Spring应用...

    SpringCloud——路由器和过滤器(Zuul)

    2. **过滤器机制**:Zuul支持预过滤、路由过滤、post过滤和错误过滤四个阶段的过滤器,可以用于身份验证、日志记录、限流等场景。 3. **动态路由**:可以通过配置中心动态修改路由规则,适应业务变化的需求。 4. **...

    spring boot 拦截器拦截/Filter 过滤session案例

    在本文中,我们将深入探讨如何在Spring Boot应用中使用拦截器(Interceptor)和过滤器(Filter)来处理用户的登录session。这两个组件都是Spring框架的重要部分,它们在处理HTTP请求和响应时发挥着关键作用。 首先...

Global site tag (gtag.js) - Google Analytics