如何在URL末尾使用和不使用/访问我的Web应用程序

时间:2014-03-02 13:26:25

标签: java jsp servlets

在我看来,我有一个非常简单的问题,但我无法找到一个有效的解决方案。

我一直关注web.xml

<servlet-mapping>
    <servlet-name>Servlet</servlet-name>
    <url-pattern>/article/*</url-pattern>
</servlet-mapping>

如果我从以下网址http://localhost/article访问我的网络应用程序,则可以正常工作。如果我在结尾处添加斜杠,则应用程序会运行ifinitie循环。

我知道这是由getRequestDispatcher("index.jsp").forward(req, resp)调用和web.xml配置条目/article/*生成的。

如果我将index.jsp更改为/index.jsp,我会正确转发,但所有资源都会被映射到错误的路径。例如,css文件映射到 article / css 而不是 css 。我认为这是因为getRequestDispatcher保留了contextPath。

index.jsp放在根目录中。

我如何访问http://localhost/articlehttp://localhost/article/

1 个答案:

答案 0 :(得分:0)

我认为:

  • 静态资源相对于文件系统上的JSP
  • 网址是相对的

浏览器将解析相对于当前URL的相对URL。您可以使用应用程序的上下文路径来提供正确的路径:

<link rel="stylesheet"
  href="${pageContext.servletContext.contextPath}/css/foo.css">

现在请求URL是什么或应用程序上下文路径是什么并不重要;链接将得到正确解决。

表达式有点冗长,但您总是可以使用字符串的应用程序范围副本缩短它。