В своем приложении я использую struts2 и создаю базовое действие для решения проблемы пути:
class BaseAction{
private String path;
static{
HttpServletRequest request = ServletActionContext.getRequest(); path=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();+"/";
}
}
Тогда все остальные действия продлевают эту базовую операцию.
На моей странице jsp я добавляю путь в качестве базы:
xx.jsp:
....
<head>
<base href="<s:property value='path'/>">
<script ... src="res/test.js" />
</head>
Хорошо работает на моей собственной машине.
http://localhost:8080/app
Test.js может быть найден "http://localhost:8080/app/res/test.js"
Но когда другие люди пытаются посетить мое приложение, они используют:
http://192.168.x.x:8080/app.
теперь браузер все еще пытается загрузить test.js
«http://localhost:8080/app/res/test.js"
Конечно, он не может его получить. Реальный путь должен быть:
http://192.168.x.x:8080/app/res/test.js
Так как "путь" - это жесткий код в действии, есть идеи, чтобы это исправить?