在这种情况下如何处理路径

时间:2012-08-21 15:43:59

标签: jsp servlets

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

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

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

现在从PageA点击一个指向ServletB的链接。 servletB做了一些工作并转发到PageB。在这个阶段,网址上的地址是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/则将其带到同一位置{{ 1}}

1 个答案:

答案 0 :(得分:1)

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

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

<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'>

如果这可以解决您的问题,请告诉我。