SSM静态资源访问不了问题
- 因为配置SpringMVC会把全部请求都通过它拦截了
<!--springmvc的前端控制器,拦截所有请求-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
- 考虑
spring-mvc.xml
配置文件配置静态资源放行了没
<!-- 设置静态资源不过滤 -->
<mvc:resources location="/static/css/" mapping="/css/**" />
<mvc:resources location="/static/images/" mapping="/images/**" />
<mvc:resources location="/static/js/" mapping="/js/**" />
<!-- 配置静态文件放行 -->
<mvc:default-servlet-handler />
- 配置完后就要在html或jsp中加载这些资源,可能路径写错
${pageContext.request.contextPath}
是获得项目的webapp
的目录的意思,静态资源访问不了可能这个没写
- 在你的页面中如果需要使用
webapp
下的一些东西的时候,就可以在页面中使用这样的方式去获得这些资源文件
- 编写了一个获取项目绝对路径的类,实现
ServletContextListener
接口
- 出大问题,忘写
@WebListener
注解,所以根本不起作用,也就获取不到项目的静态资源了
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class AppListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
//取到ServletContext
ServletContext context = servletContextEvent.getServletContext();
context.setAttribute("ctx",context.getContextPath());
System.err.println("----Servlet容器创建成功,ctx被放到ServletContext作用域----");
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
}