0

私のWebアプリのディレクトリ構造は

myApp
 -src
     - filtersPackage(all my filters lie in this package)
     - servletsPackage(all my controllers and models lie in this package)
 - web-content           
   - web
     - views(all my jsp files lie in this dir)
     - js(all my javascript files lie in this dir)

login.jsp で、ユーザーが FB ログイン ボタンをクリックし、js/FBAUth.js 内でログインの詳細を収集し、jquery ajax POST メソッドを使用して auth.do サーブレットに送信します。

SessionFilter は、リクエストが AuthServlet の doPost メソッドに送られるようにします。AuthServlet で資格情報が正しい場合は、次の手順を実行します

url = "dashboard.jsp" 
request.getSession().setAttribute("uid", id);               
view = request.getRequestDispatcher(url);
view.forward(request, response);
return;

デバッグ モードでこれらの行が実行されることを確認しましたが、ブラウザはログイン ページで停止したままです。view.requestURI -> /myApp/web/views/dashboard.jsp および view.servletPath -> /web/views/dashboardTmp.jsp の値。response.sendRedirect(url) も試しましたが、それでもブラウザはログイン ページで動かなくなります。これらの行の後は何も実行されません。

web.xml では、私の認証サーブレットは次のようにマッピングされます

<servlet>
    <servlet-name>Auth</servlet-name>
    <servlet-class>servletsPackage.AuthServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Auth</servlet-name>
    <url-pattern>/web/views/auth.do</url-pattern>
</servlet-mapping>

また、doPost 内で doGet を呼び出してみて、このコードを doGet で実行しましたが、すべて無駄でした。ここで何が欠けていますか?

4

2 に答える 2

1

このアプローチには少し欠陥があるようです。AJAX を使用してデータを投稿しているため、転送が機能していません。リダイレクトを処理するには、javascript または jquery を使用する必要があります。

jquery AJAX 関数のコールバック メソッドが機能しているかどうかを確認します。を使用してresponseTextを印刷しますalert(responseText);

問題の詳細については、このリンクを確認してください。そして、最初の答えを確認してください。この問題の解決策を提供します。

于 2012-08-31T06:38:19.437 に答える
0

サーブレットから何かを返すようにして (応答ライターに書き込みます)、それを ajax 応答として取得し、それに応じて、window.location.href ="YOUR URL";

于 2012-08-31T06:46:54.627 に答える