我开发了Web应用程序。
Tomcat servlet容器上的Spring + Hibernate。
今天在另一台PC上我部署了应用程序,看到css没有加载。
在jsp中我使用相对路径(示例)
<link href="/resources/css/ui-lightness/jquery-ui-1.10.0.custom.min.css" rel="stylesheet">
浏览器发送的相应请求:
http://localhost:8080/resources/css/ui-lightness/jquery-ui-1.10.0.custom.min.css
并且此请求返回404 http错误。
另一个jsp:
<link href="/resources/css/bootstrap.min.css" rel="stylesheet">
浏览器发送:
http://localhost:8080/terminal-company/resources/css/bootstrap.min.css
因此,您可以看到从第一个jsp项目名称未添加到URL
为什么呢?以及如何解决它?请求我详细说明我应该添加到相关答案。
弹簧相关的web.xml部分:
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/webContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
答案 0 :(得分:2)
如果您的目标是能够使用绝对路径,而无需关心(并了解)webapp的上下文路径(在第二个示例中为/terminal-company
),那么请使用the JSTL {{1标记生成所有网址:
<c:url>
第二个示例将向<link href="<c:url value='/resources/css/bootstrap.min.css'/>" rel="stylesheet">
发送请求,而不是/resources/css/bootstrap.min.css
,除非生成的HTML页面中有/terminal-company/resources/css/bootstrap.min.css
标记。
答案 1 :(得分:0)
您忘记在web.xml中为您的css文件添加servlet映射。
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
这适用于所有js,png。
这会起作用我想因为我也有同样的问题。
答案 2 :(得分:0)
我遇到过在localhost上运行的相同行为。只需添加默认的servlet,它将提供静态资源,如css,js,images等。 映射必须放在“/”urlpattern之前,因为“/”将匹配“/ js”。
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/css/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/images/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/js/*</url-pattern>
</servlet-mapping>