用另一页调用的JSP在servlet中引用CSS的正确方法

时间:2019-05-20 23:11:06

标签: css jsp servlets include

我有一个Java WebServlet(例如javax.servlet.annotation.WebServlet @WebServlet)应用程序,该应用程序返回JSP页面作为对POST请求的响应。本质上,它是仪表板的“部件”。

当我直接对服务进行邮寄呼叫时,所有工作都按预期进行,包括.css include等资源

但是,当我从网页上对服务进行ajax调用(以填充div时)

$.ajax( "http://localhost:8680/jsdv-status-panel/tsv-multi",
        { data: JSON.stringify(
              {"some json here" }
          ),
          contentType: 'application/json',
          type: 'POST',
          success:  function(data){
              $("#main_div").html(data);
            }
        });

浏览器显示错误

Refused to apply style from 'http://localhost:63342/test_app/resources/css/statuspanel.css' because its MIME type ('text/html') is not a supported stylesheet
我理解的

表示无法定位资源,因为JSP中的.css文件使用的相对URI为{context} /resources/css/statuspanel.css

因此,进行调用以获取JSP的网页将{context}转换为我假设的自身上下文。

这是“固定的”,方法是指定css资源的服务路径(例如

)的完整URL
http://localhost:8680/my_web_service/restful_path/resources/css/statuspanel.css

我的问题是-这是正确的还是首选的方法? 只是确保可以从客户端访问资源并指定完整的URL,而不是使用资源的相对路径?

还是我的配置可能不正确?

我不“想”我有问题或需要在web.xml中映射上下文资源类型,我不“想”我需要类似

<mvc:resources location="/resources/" mapping="/resources/**" />

因为它在服务器端找到了资源(这意味着DefaultDispatcher在本地找到了,是吗?)。

Servlet

@WebServlet(name="jsdv-status-panel", asyncSupported = true, urlPatterns = { "/tsv-last-value", "/tsv-window", "/tsv-multi" }, loadOnStartup = 1)

这在客户端不起作用

<link rel="stylesheet" type="text/css" href="./resources/css/statuspanel.css"/>

这确实在客户端起作用

<link rel="stylesheet" type="text/css" href="http://localhost:8680/jsdv-status-panel/resources/css/statuspanel.css"/>

所以-我只是猜测{co​​ntext}是原因,而.css始终是客户端?因此,请在JSP(或任何服务器端)中明确指定URL / URI

是吗?

我没有web.xml覆盖-仅@WebServlet注释。

0 个答案:

没有答案