" 类型="“文本/CSS”/">。
标记将创建一个实际上恒定的 URL,不会随当前页面请求而改变。
至于您的控制器受到 css/images 等请求的影响,请查看 这个问题。简而言之,理想情况下您希望使用 Tuckey 的 Url Rewrite 过滤器之类的东西来确保静态内容请求不会调用您的 DispatcherServlet。
编辑:实际上看起来 Spring 3.04 现在有比 Tuckey's Filter 更好的解决方案。
看起来设置起来更简单。
对于第一个问题,您可能将图像和 CSS 源指定为相对路径。由于视图是从不同的路径渲染的,因此相对路径也不同。有关如何正确指定它们的信息,请参阅 Melv 的答案。
对于第二个问题,请查看 spring mvc 文档 了解如何让静态请求通过 Dispatcher Servlet。
您基本上有三个选择:
不要更改您的网络上下文。将所有 URL 设置为 http://myapp/myrequest?par1=val1
。我以前做过这种应用程序,但是当有很多可能的操作时,URL将无法组织。 “REST 风格”URL 更漂亮,并且是世界不久前的发展方向。
在所有内部网址中使用
。我认为这不是一个坏选择,但有很多样板代码,比乍一看要多。如果您使用 javascript 调用 URL,则必须知道哪个是正确的 URL,这可能会很笨拙。
在我当前的开发中,我使用
标签。您必须在所有页面的头部包含
。然后,您可以使所有 URL 相对于应用程序的基本路径。虽然有一些缺点,但这是我的首选。
编辑:回答你的问题。您可以通过以下方式获取应用程序的根 URL,而不是参数化您的应用程序:
<base href="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/" />
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
The urls you're creating for your stylesheets etc. should be created ideally with some sort of url rewriting tag, to ensure they're relative to the root app context and not to the current url. What view technology are you using? JSP? If so you'll want something like this
<link rel="stylesheet" href="<c:url value='/css/styles.css'/>" type="text/css"/>
. The<c:url/>
tag will create a url which is effectively constant and won't change with your current page request.As for your controller being hit on requests for css/images etc, check out this question. In short, ideally you want to use something like Tuckey's Url Rewrite filter to make sure that your DispatcherServlet isn't called for static content requests.
Edit: Actually looks like Spring 3.04 has a nicer solution to this now than Tuckey's Filter.
<mvc:resources/>
looks much simpler to setup.