У меня есть приложение Java WebServlet (например, javax.servlet.annotation.WebServlet @WebServlet), которое возвращает страницу JSP в качестве ответа на запрос POST. По сути, это «виджет» для панели инструментов.
Все работает, как и ожидалось, когда я делаю почтовый звонок непосредственно в службу, включая ресурсы, такие как .css включает
Однако, когда я выполняю 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
, который, как я понимаю, свидетельствует о том, что он не может найти ресурс, что, как я понимаю, потому что .css-файл в JSP использует относительный URI {context} /resources/css/statuspanel.css
Итак, веб-страница, выполняющая вызов для получения JSP, транспонирует {context} в свой собственный контекст, который я предполагаю.
Это "исправимо", указав полный URL-адрес пути службы ресурса css, например
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"/>
Итак, я просто предполагаю, что {context} является причиной, а .css всегда на стороне клиента? поэтому явно укажите URL / URI в JSP (или на стороне сервера)
Да?
У меня нет переопределений web.xml - только аннотации @WebServlet.