开发者社区> 问答> 正文

springmvc 配置静态资源 无效:配置报错 

web.xml

<!-- log4j日志打印配置文件 -->
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </context-param>
    <!-- 不知道是什么鬼,解决项目启动时报错 -->
    <context-param>
        <param-name>spring.liveBeansView.mbeanDomain</param-name>
        <param-value>default</param-value>
    </context-param>
    <!-- 防止内存泄漏的监听器 -->
    <listener>
        <listener-class>
            org.springframework.web.util.IntrospectorCleanupListener
        </listener-class>
    </listener>
    <!-- 然后是filter -->
    <!-- 编码过滤器 -->
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 用户登录session过滤器 -->
    <filter>
        <filter-name>sessionFilter</filter-name>
        <filter-class>com.gonethen.utils.SessionFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>sessionFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- springmvc主配置 -->
    <!-- 最后为controller加载成bean提供依赖注入 -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <async-supported>true</async-supported>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

springmvc.xml

<!-- 访问静态资源文件 -->
    <mvc:default-servlet-handler />
    <mvc:resources location="/" mapping="/**/*.js"/>  
    <mvc:resources location="/" mapping="/**/*.css"/>  
    <mvc:resources location="/im/" mapping="/im/**"/>
    <mvc:resources location="/common/" mapping="/common/**"/>
<!-- 配置视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 使用前缀和后缀 -->
        <property name="prefix" value="/WEB-INF"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
<!-- 拦截器 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.gonethen.utils.PermissionInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

项目结构

启动日志

login.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>LOGIN</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="format-detection" content="telephone=no">
<meta name="renderer" content="webkit">
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link rel="alternate icon" type="image/png" href="<c:url value="/im/favicon.ico"/>">
</head>
<body>
	
	<header>
	</header>
	<main>
</main>
	<jsp:include page="/common/footer.jsp" flush="true" />
	<script type="text/javascript" src="<c:url value="/js/login.js"/>"></script>
</body>
</html>
footer.jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<body>
	<footer class="am-footer am-footer-default">
	</footer>
	<script type="text/javascript" src="<c:url value="/js/amazeui.dialog.min.js"/>"></script>
	<script type="text/javascript" src="<c:url value="/js/common.js"/>"></script>
</body>
</html>

按说配置mvc:resources 就可以不被拦截和过滤了吧?结果拦截器过滤器都没通过。

求问大神们,看看问题出在哪里了,这问题憋得我两个月没有啪啪啪了。。。

展开
收起
kun坤 2020-06-02 14:42:57 548 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/ask/294735

    看在你两个月没用啪啪啪的份上提醒你,你的静态资源配置太繁索,首先,前两个配置一样,
    看我的配置简单一句话

    registry.addResourceHandler("/static/**").addResourceLocations("/WEB-INF/static/");
    把你的静态资源组织放在同一个父目录里,一句话搞定就行, ######回复 @GONETHEN : 我这是代码配置,你是xml配置,同样的道理,因为你配置了 / 而其他filter也拦截 / 所以导致重复拦截,你把静态url拦截的 路径和普通的分开######那么请问这段代码应该放在哪个类里? registry又是什么东东? 我先自己查一查,还请明示######这配置 没什么毛病啊。你要问什么?是不是 PermissionInterceptor 拦截了你的静态资源? mvc:mapping path=/** , 额外添加需排除的资源路径 mvc:exclude-mapping path=######回复 @GONETHEN : spring mvc:resources 只是资源处理,并不是说用了它之后就不需要管了,尤其在自定义 Interceptor ,filter 的时候 要判断是否是资源请求。另外 如果你用 nginx 代理了静态资源,那可以不用再需要在 springMVC 中处理。。######不止PermissionInterceptor拦截了 还有sessionFilter也过滤了###### http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-caching-static-resources 说明了只是进行了缓存,并没有说明不拦截 ######好吧,谢谢大神指点
    2020-06-02 15:55:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多