<mvc:resources mapping="/xxx/**" location="/xxx/"/>无效,可能和Controller的URL模式有关

某项目webapp下有子目录res,其中有img、css、js等存放静态资源的文件夹。

在定义了dispacher-servlet的<url-pattern>/</url-pattern>后,

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

为访问静态资源,特别在dispacher-servlet.xml定义了<mvc:resource/>标签

    <!-- 注解驱动 -->
    <mvc:annotation-driven />

    <!-- 静态资源访问,约定:静态资源都放在web应用根的res文件夹中 -->
    <mvc:resources location="/res/" mapping="/res/**" />

随后定义了HomeController,如下:

@Controller
public class HomeController { @RequestMapping(method=RequestMethod.GET) public String home() { return "home"; } }

结果,无法访问静态资源

为Controller加上url模式,

@Controller
public class HomeController {

    @RequestMapping(value="/", method=RequestMethod.GET)
    public String home() {
        return "home";
    }
}

之后,访问静态资源正常了。

原文地址:https://www.cnblogs.com/godwithus/p/10392536.html