0

jspにログアウトリンクがあり、このようにログアウト関数を呼び出します

function logout(){
    document.getElementById("functiontype").value="logout";
    document.forms["frmTempcard"].submit();               
}

私はこれを次のように呼び出します: <li><a href="#" onclick="logout()">Logout</a></li>

リンクをクリックすると、次の URL が表示されます。http://localhost:8080/acct/notifier[the jsp file is there in this folder only ]/TempCardServlet

URLのフォルダー名を削除すると、正常に機能します。では、目的のサーブレットにリダイレクトする方法は?

私を助けてください。

4

3 に答える 3

2

action共有したコードと問題の説明に従って、フォームの属性を確認する必要がactionあります。フォームを更新する必要があると思います。

現在、現在のJSPページと同じURLにaction='TempCardServlet'あるリクエストを送信することを意味します。TempCardServletこれは相対パス参照です。

指定するとaction='SomePath'、ブラウザはにリクエストを送信しhttp://server/currenturl/SomePathます。リクエストを送信する必要のあるパスが現在のパスにない場合は、次の方法で相対パスまたは絶対パスを指定する必要があります。

相対パス(あなたの場合):action='../TempCardServlet'-相対パスがアプリケーションを壊す可能性があるため、この方法はお勧めしません

アプリケーションコンテキストを使用した絶対パス:action='/acct/TempCardServlet'-これは同じサーバー上のサーブレットを参照しますが、これの欠点は、アプリケーションコンテキストをハードコーディングしていることです。これを克服するには、サーブレットAPIを使用して現在のアプリケーションコンテキストを取得し、それをサーブレットパスに追加します。標準のタグライブラリを使用して、コンテキストパスを追加することもできます。

于 2012-07-12T09:40:14.320 に答える
1

これ:
<a href="/myWebApp/servlets/logout">Logout</a>

... 次のようにマップされた独自のサーブレットを呼び出します。

@WebServlet(name="logout", urlPatterns={ "/servlets/logout" })
public class LogoutServlet extends HttpServlet {
    ...
}

...ログアウトロジックを実行します。

于 2012-07-12T09:41:55.883 に答える
1

フォームのaction属性が適切な URL を指すようにします。

<form action="<c:url value='/TempCardServlet'/>" ...>

動的に変更する必要がある場合は、これを JS コードに追加します (もちろん、送信前に):

document.forms["frmTempcard"].action = "<c:url value='/TempCardServlet'/>";
于 2012-07-12T09:37:09.453 に答える