使用Maven构建的项目中配置了<mvc:default-servlet-handler />却还是不能访问静态资源,三种访问静态资源的处理方式都试过了,全都不行。
详细配置如下:
springMVC-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/context/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 注册组件扫描器 --> <context:component-scan base-package="com.ztyz.teen.*" /> <context:annotation-config /> <!-- 注册HandlerMapper、HandlerAdapter两个映射类 --> <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes" value="text/plain;charset=UTF-8" /> </bean> </mvc:message-converters> </mvc:annotation-driven> <!-- 访问静态资源 --> <mvc:default-servlet-handler /> <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> </beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 注册字符集过滤器 --> <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> <!-- 注册中央处理器 --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 指定springMVC配置文件的路径及文件名 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/springMVC-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
文件存放路径如下:
纠结好久了,急!!!大神们给看看
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/static/*</url-pattern> </servlet-mapping>
试一下这个,注意要写在其他servlet前面
这个我已经试过了,没有用
静态资源好像系统默认是关闭的,需要设置开启。。
这个怎么设置开启呢?能不能详细说说
@冷锋SJ记忆: springMVC-servlet.xml 会不会是在这个里面少写了一句default-lazy-init="true 我今天遇到一个 加上了莫名其妙的就好了 也不知道是不是这回事
@吉吉的城: 谢谢你的回答,default-lazy-init="true"是spring对数据库的懒加载参数,主要是减少web服务器运行时负担采用的,对静态资源没有影响
@吉吉的城: 我这问题也没解决,暂时只需要从网络加载js等资源就可以了,所以先放一放吧
@冷锋SJ记忆:maven项目默认的路径是不是在/WEB-INF底下的吗??
@吉吉的城: 我放到WEB-INF下面试过了,不行
@冷锋SJ记忆: 哦哦 我也帮你研究下 有结果了给你说 你如果有解决的办法也给我说下 谢谢
@吉吉的城: OK
问题解决了 能给我发下原因吗!!谢谢了
楼主你cotroller的RequestMapping写了吗.........
@Controller
public class HomeController {
@RequestMapping()
public String toindex() {
return "index";
}
}
如果没写,就会一直转向index页面,然后浏览器上就会出现类似静态资源被拦截的现象
必须在webapp目录下建一个static目录,然后把静态资源放里面,这个标签才能生效