我的java webapp中具有以下结构
-- main -- java -- resources -- lib -- css -- style.css -- webapp -- WEB-INF -- web.xml --index.jsp
如何将style.css链接到索引jsp?
<link rel="stylesheet" href="???">
这里应该是什么?
提前致谢
Maven /main/resources文件夹用于不代表Java类的类路径资源,例如i18n属性文件和各种配置文件(文本,xml,json等)。正是您想通过获取的资源ClassLoader#getResourceAsStream()。
/main/resources
ClassLoader#getResourceAsStream()
该文件夹不适用于公共Web资源(即,可通过公共http://xxxURL 访问的文件)。您应该将这些Web资源文件放在Maven /main/webapp文件夹中(在/WEB-INF和外部/META-INF),就像您已经正确地为JSP文件(也是公共Web资源)所做的那样。
http://xxx
/main/webapp
/WEB-INF
/META-INF
因此,只需/lib向下移动该文件夹即可(我个人也将该文件夹重命名为“ resources”,“ assets”或“ static”,这更符合事实上的标准;“ lib”文件夹名称即表示它是完整的JAR文件)。
/lib
main |-- java |-- resources `-- webapp |-- lib | `-- css | `-- style.css |-- WEB-INF | `-- web.xml `--index.jsp
在这种结构下,示例部署上下文路径为/webapp,示例服务器在上运行http://localhost:8080,应该可以在绝对URL下访问CSS文件:
/webapp
http://localhost:8080
http:// localhost:8080 / webapp / lib / css / style.css
因此,JSP页面的HTML表示中的以下任何CSS链接都应该起作用:
<link rel="stylesheet" href="http://localhost:8080/webapp/lib/css/style.css" /> <link rel="stylesheet" href="//localhost:8080/webapp/lib/css/style.css" /> <link rel="stylesheet" href="/webapp/lib/css/style.css" /> <link rel="stylesheet" href="${pageContext.request.contextPath}/lib/css/style.css" />
随便吧。考虑到目标URL其他部分的动态性,建议使用最后一个。