SpringMVC 静态资源过滤(无法加载css、js的解决)各类方法

本文分享了软件工程学子在做SpringMVC项目时遇到的静态资源访问问题解决方案,涉及jsp路径调整、Spring-MVC配置、web.xml修改和pom.xml优化,助你轻松解决静态资源加载难题。
部署运行你感兴趣的模型镜像

本人作为一名卑微且喜欢划水的软件工程学子,在做SpringMVC框架项目的期末大作业时,发现了与jsp跳转和静态资源过滤的相关问题(静态资源无法加载即静态资源被拦截),并在网上做了搜索。

本文意在对静态资源无法调用的的解决方法做不完全整合,所有方法均来自网络,所有代码来自本人作业成功运行实例,侵权必删,欢迎指正和补充。

Solution 1:让jsp文件获取项目url

在jsp文件头部插入相对路径

<%
    //获取项目的url地址
    String basePath = request.getScheme() + "://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
%>

在jsp中html部分引用处url加入 <%=basePath %>,如

<head>
    <link href="<%=basePath %>assets/css/bootstrap.css" rel="stylesheet" /> 
</head>
<body>
<script src="<%=basePath %>assets/plugins/vegas/jquery.vegas.min.js"></script>
<script src="<%=basePath %>assets/plugins/jquery.easing.min.js"></script>
</body>

url引用还可使用${pageContext.request.contextPath}(记得加“/”)

<head>
   <link href="${pageContext.request.contextPath}/assets/css/style.css" rel="stylesheet" />
</head>
<body>
<script src="${pageContext.request.contextPath}/assets/js/custom.js"></script>
</body>

此外对jsp的修改还有插入项目名称的方法,详见文章内的第二种https://blog.youkuaiyun.com/qq_40366444/article/details/88706739

Solution 2:对spring-mvc.xml进行修改

 加载驱动

<!--加载springmvc特有的注解驱动-->
    <mvc:annotation-driven></mvc:annotation-driven>

静态资源放行(全部放行)

<!--SpringMvc放行静态资源  css .jpg js..-->
    <mvc:default-servlet-handler/>

 静态资源解析处理(指定放行)

 <mvc:resources location="/assets/js/" mapping="/js/**" />
    <mvc:resources location="/assets/img/" mapping="/assets/img/**" />
    <mvc:resources location="/assets/css/" mapping="/css/**" />
    <mvc:resources location="/assets/plugins/" mapping="/plugins/**" />

 

Solution 3:对web.xml进行修改

加入以下代码

<!-- static resources -->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.gif</url-pattern>

  </servlet-mapping>

  <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>

Solution 4:对pom.xml进行修改

<build>
<resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
      </resource>
    </resources>
  </build>

以上就是本人经过本次作业总结的四种方法,希望能帮到有需要的人叭~

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### Spring MVC 中 CSS 文件未生效原因分析 #### 一、可能的原因 1. **配置问题** 静态资源配置不当可能是导致 CSS 文件无法加载的主要原因之一。Spring MVC 的配置文件中如果没有正确设置静态资源的映射路径,或者设定的路径实际存放位置不符,则会导致浏览器无法找到对应的 CSS 资源[^3]。 2. **请求后缀名冲突** 如果项目中有特定的 URL 映射规则(例如基于 `.html` 或其他扩展名),而这些规则覆盖了对静态资源的默认处理逻辑,那么即使路径正确,CSS 文件也可能不会被正常解析和返回。 3. **DispatcherServlet 拦截问题** 默认情况下,Spring MVC 的 `DispatcherServlet` 会拦截所有进入应用的 HTTP 请求。如果未对其行为加以限制或调整,默认的行为可能会干扰到静态资源(如 CSSJS 文件)的直接访问。 4. **路径书写错误** JSP 页面或其他视图模板中的 `<link>` 标签指向的相对路径可能存在拼写失误或是相对于当前页面而非根目录的情况。这同样会造成样式表未能成功加载[^2]。 --- ### 解决方案 以下是针对上述各点的具体解决措施: #### 方法一:合理配置静态资源映射 在 Spring MVC 的 XML 配置文件中加入如下片段以确保能够正确响应对于图片、脚本以及样式单等公共资源的需求: ```xml <mvc:resources mapping="/static/**" location="/WEB-INF/static/" /> ``` 此段声明告诉框架如何定位 `/static/` 开头的所有 URI 到指定的实际物理存储地址下寻找相应的内容。 #### 方法二:排除静态资源免受额外过滤器影响 通过修改 web.xml 来让部分类型的请求绕过复杂的控制流程直达目标文件系统区域,比如这样实现简单的通配符模式匹配忽略机制: ```xml <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> <url-pattern>*.js</url-pattern> <!-- Add other static resource extensions as needed --> </servlet-mapping> ``` 另外也可以利用 Java 注解方式完成类似效果,在主应用程序类上添加 @EnableWebMvc 并自定义 WebConfig 类重载 addResourceHandlers 函数达成目的: ```java @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/"); } ``` #### 方法三:修正 HTML/CSS 引入语句中的路径表达式 确认前端代码里引用外部样式表时采用的是绝对还是相对链接形式,并保证它们最终都能准确无误地抵达服务器端部署好的文档树结构内部节点处。通常推荐做法是以站点根域开头构建统一标准格式化后的全量URL字符串作为 href 属性值的一部分参渲染过程之中去。 #### 方法四:调试工具辅助排查网络传输环节障碍物 借助现代浏览器自带开发者选项卡里面的 Network panel 功能实时监控每一次尝试获取远程依赖项的动作状态码及其伴随消息体详情信息等内容,从而快速锁定异常源头所在具体方位范围之内再做进一步深入探究分析工作直至彻底解决问题为止[^1]^。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值