昨天因为捣鼓win10的登录界面背景,导致开机黑屏,于是还原了系统。
重装了JDK等,然而eclipse中的jsp项目不知何故,css和js集体失效了。
一开始我以为是${pageContext.request.contextPath}路径的问题,参考网上在jsp文件开头的<% page后加上ELIgnored=false然并软。且查看打开的网页源代码,路径是正确的。
之后尝试了重做tomcat也不行。
再后来动了一下web.xml,奇迹般的解决了,并没有了解真正原因,好在解决了。还请有知道根本原因的朋友不吝赐教。
<!-- 页面跳转servlet -->
<servlet>
<servlet-name>Dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- Spring配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:config/applicationContext.xml
classpath:config/spring-security.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
我是删除了web.xml的这一段,跑了一次,然后又把这一段贴回去,问题解决。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
更新2016-05-13
以上方法不彻底,重启服务器仍然无法读取。
在applicationContext.xml配置文件中加<mvc:default-servlet-handler/>解决。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
更新2016-15-26
还有一种情况是增加认证授权功能,导致css和js被拦截,我用的是Shiro
<property name="filterChainDefinitions">
<value>
/logout=anon
/login.jsp = anon
/tag=authc
/**=authc
</value>
</property>
/**=authc
这句导致所有页面都会被拦截,需要增加类似以下代码
<span style="white-space:pre"> </span>/css/** = anon
/js/** = anon
/fonts/** = anon
如果/css上级还不是basePackage指定的路径,需要把basePackage下完整的路径写上
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.XXXXX" />
</bean>
以上。