我正在使用tomcat 7.0。现在我面临一个无法加载css和js文件的问题。试图添加$ {pageContext.request.contextPath}但不起作用,也试过c:url标签,但在eclipse中遇到语法错误。
这些文件的结构是:
的WebContent
-content / CSS / lab3.css
html和js文件夹也在内容文件夹下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>lab3</display-name>
<welcome-file-list>
<welcome-file>/content/html/lab3.html</welcome-file>
</welcome-file-list>
</web-app>
这是html头:
<link rel="stylesheet" type= "text/css" href= "${pageContext.request.contextPath}/css/lab3.css" media="screen, projection">
答案 0 :(得分:6)
EL expressions ${}
无法在纯HTML文件中运行。它仅在JSP(和Facelets)文件中运行。在您的特定情况下,只需将lab3.html
重命名为lab3.jsp
,或将以下JSP servlet映射添加到web.xml
:
<servlet-mapping>
<servlet-name>jsp</servlet-name> <!-- This is the default servlet name of Tomcat's own JSP servlet. To be sure, look in Tomcat's own web.xml for the exact name. -->
<url-pattern>*.html</url-pattern>
</servlet-mapping>
将告诉Tomcat将所有.html
文件视为JSP文件,结果EL将立即在.html
文件中正常工作。
如果以上都不是可接受的解决方案,那么您需要回归逻辑思维并正确理解和使用相对路径。与本地磁盘文件系统一样,../
会在URL中为您提供一个文件夹。如果HTML文件位于/content/html/lab3.html
且CSS文件位于/content/css/lab3.css
中,则应执行以下操作:
<link ... href="../css/lab3.css" />
答案 1 :(得分:0)
使用$ {request.contextPath}代替$ {pageContext.request.contextPath}