在 Web 应用中处理上下文有什么聪明的方法吗?
在Java中,Web应用程序被捆绑到VAR中。默认情况下,许多 Servlet 容器将使用 WAR 名称作为应用程序的上下文名称。
因此,myapp.war被部署到 http://example.com/myapp。
问题在于,Webapp认为它的“root”是“root”,或者简称为“/”,而HTML会认为应用程序的根是“/myapp”。
Servlet API 和 JSP 具有帮助管理此功能的功能。例如,如果在 servlet 中,您执行了:response.sendRedirect(“/mypage.jsp”),容器将在上下文前面附加并创建 url:http://example.com/myapp/mypage.jsp”。
但是,你不能用HTML中的IMG标签来做到这一点。如果你<img src=“/myimage.gif”/>你可能会得到404,因为你真正想要的是“/myapp/myimage.gif”。
许多框架也具有上下文感知的 JSP 标记,并且在 JSP 中有不同的方法来制作正确的 URL(没有一种特别优雅)。
对于编码人员来说,跳出何时使用“应用程序相对”URL而不是绝对URL是一个细节问题。
最后,还有一个Javascript代码的问题,它需要动态创建URL,以及在CSS中嵌入URL(用于背景图像等)。
我很好奇其他人使用什么技术来缓解和解决此问题。许多人只是简单地将其平底船和硬编码,要么到服务器根目录,要么到他们碰巧使用的任何上下文。我已经知道这个答案,这不是我想要的。
你是做什么工作的?