0

我的应用程序中有以下结构

--Controller
  |_ServletA
  |_ServletB
--Webpages
  |_Secure
      |_PageA
      |_PageB
  |_PageC

现在应用程序从 PageC 开始,它发布到 ServletB。ServletB 转发到 PageA。

现在从 PageA 单击指向 ServletB 的链接。servletB 做一些工作并转发给 PageB。在这个阶段 url 上的地址是 http://localhost:8080/MyApp-war/Secure/PageB.jsp.

现在的问题是 PageB 上的链接指向 ServletB。链接是

<a href="ServletB"> 

因此浏览器http://localhost:8080/MyApp-war/Secure/ServletB应该指出哪个是错误的http://localhost:8080/MyApp-war/ServletB。如何在不更改从 pageB 到 ServletB 的链接的情况下解决此问题,因为它在第一次尝试时可以正常工作,但是当相对地址更改时它会失败?

编辑 :

简而言之,我想知道的是我应该在链接中放置什么

<a href="ServletB"> 

所以如果相对地址是http://localhost:8080/MyApp-war/Secure/它指向http://localhost:8080/MyApp-war/ServletB而不是,http://localhost:8080/MyApp-war/Secure/ServletB如果相对地址是http://localhost:8080/MyApp-war/它把它带到同一个位置http://localhost:8080/MyApp-war/ServletB

4

1 回答 1

1

您需要在这里做的是将您的 Web 应用程序的上下文路径添加到链接中。你可以做这样的事情;

这意味着,如果您的 servlet 定义web.xml是这样的

<servlet>
    <servlet-name>ServletB</servlet-name>
    <servlet-class>com.myfullpackage.MyServletB</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>ServletB</servlet-name>
    <url-pattern>/ServletB</url-pattern>
</servlet-mapping>

你会做这样的事情

<a href='<%=request.getContextPath()%>/ServletB'>

或者你使用表达语言形式

<a href='${pageContext.request.contextPath}/ServletB'>

让我知道这是否解决了您的问题。

于 2012-08-21T15:56:28.023 回答