在我看来,我有一个非常简单的问题,但我无法找到一个有效的解决方案。
我一直关注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/article
和http://localhost/article/
?
答案 0 :(得分:0)
我认为:
浏览器将解析相对于当前URL的相对URL。您可以使用应用程序的上下文路径来提供正确的路径:
<link rel="stylesheet"
href="${pageContext.servletContext.contextPath}/css/foo.css">
现在请求URL是什么或应用程序上下文路径是什么并不重要;链接将得到正确解决。
表达式有点冗长,但您总是可以使用字符串的应用程序范围副本缩短它。