我有一个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资源的服务路径(例如
)的完整URLhttp://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"/>
所以-我只是猜测{context}是原因,而.css始终是客户端?因此,请在JSP(或任何服务器端)中明确指定URL / URI
是吗?
我没有web.xml覆盖-仅@WebServlet注释。