0

私のアプリには次のような構造があります

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

これで、アプリケーションはServletBに投稿するPageCで開始されます。ServletBはPageAに転送されます。

ここで、PageAから、ServletBを指すリンクをクリックします。servletBはいくつかの作業を行い、PageBに転送します。この段階では、URLのアドレスは次のとおりです。 http://localhost:8080/MyApp-war/Secure/PageB.jsp.

これが問題です。Pag​​eBのリンクが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/ServletBhttp://localhost:8080/MyApp-war/Secure/ServletBhttp://localhost:8080/MyApp-war/http://localhost:8080/MyApp-war/ServletB

4

1 に答える 1

1

ここで行う必要があるのは、Webアプリケーションのコンテキストパスをリンクに追加することです。あなたはこのようなことをすることができます。

つまり、のサーブレット定義が次の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 に答える