springmvc配置静态资源放行
时间: 2024-08-16 13:05:22 浏览: 55
SpringMVC访问静态资源的方法
Spring MVC 中配置静态资源放行是为了让Web应用能够直接访问静态文件,如CSS、JavaScript、图片等,而无需每次都通过Controller处理。你可以通过修改Spring MVC的配置或者使用特定的过滤器来实现这一目标。以下是常见的做法:
1. **修改`web.xml`**:
在项目的`web.xml`文件中,添加一个 `WelcomeFilter` 或类似名称的Servlet过滤器,配置它接收所有以`.css`, `.js`, `.jpg`等结尾的URL:
```xml
<filter>
<filter-name>staticResources</filter-name>
<filter-class>com.example.StaticResourceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>staticResources</filter-name>
<url-pattern>/static/*</url-pattern>
</filter-mapping>
```
然后创建一个简单的`StaticResourceFilter`,例如:
```java
@Component
public class StaticResourceFilter implements Filter {
// 过滤请求并返回静态资源
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
String uri = ((HttpServletRequest) req).getRequestURI();
if (uri.endsWith(".css") || uri.endsWith(".js")) {
HttpServletResponse response = (HttpServletResponse) resp;
response.setContentType(getMimeType(uri));
try (InputStream is = getClass().getResourceAsStream(uri)) {
StreamUtils.copy(is, response.getOutputStream());
}
} else {
chain.doFilter(req, resp);
}
}
private String getMimeType(String fileName) {
// 返回对应文件类型的MIME类型
return ...; // 根据实际需要填充
}
}
```
2. **使用`<mvc:default-servlet-handler>`标签**:
在Spring MVC的配置文件`applicationContext.xml`或`spring-boot-mvc.xml`中,添加`<mvc:default-servlet-handler/>`标签,这将启用默认的Servlet来处理静态资源。
```xml
<!-- 如果是Spring Boot -->
<mvc:default-servlet-handler/>
<!-- 或者Spring MVC的传统配置 -->
<bean id="defaultServletHandler" class="org.springframework.web.servlet.mvc.DefaultServletHandler">
<property name="order" value="0"/>
<property name="defaultContentType" value="text/html;charset=UTF-8"/>
</bean>
```
阅读全文