サーブレットとJspの動的Webサイト開発_7。フィルターとリスナー

1.フィルター

前回の記事でログインについてお話しましたが、それでも機能しません。現在のログインは直接ログインをバイパスできます。また、success.jspを直接リクエストして、このログインがまったく役に立たないことを示すこともできます。成功した場合.jsp、そこにはいくつかの重要なことがあります。個人が見ることができる限り、これは良くありません。

そこで、フィルターと呼ばれるものを導入しました。ログインしていないユーザーはブロックして、表示されないようにします。ログインしたユーザーは、フィルターを見ることができます。

フィルターは実際にはインターフェースです。フィルターの内容が異なるため、フィルターが多数ある必要があります。これは下水排出に似ています。写真を見てみましょう。

ご覧のとおり、この下水排出は、プロセス、ろ過、そして最後に水との層を通過する必要があります

私たちのプログラムは同じです、私たちはさまざまなフィルターが必要です、簡単なログインフィルターを作ってみましょう、それを感じてください

まず、LoginFilterを作成します。これがログインフィルターです。

次に、このクラスにインターフェイスを実装させます。これは、Filterインターフェイスです。

ここでインポートされたパッケージに注意してください。間違ってインポートしないでください。javaxの下にあり、他のものにしないでください。

ここでの要求と応答は、以前に使用したHttpServletRequest / Responseとは異なります。混同しないでください!

後者のFilterChainはフィルターチェーンです。他のフィルターチェーンがある場合は、引き続き実行されます。特定の実装を自分で調べることができます〜

次に、非常に馴染みのあるコンテンツを見ることができます。initは初期化であり、destroyはdestroyです。これら2つを処理する必要はありません。真ん中のdoFilterを見るだけで済みます。これを記述します。

まず、最初のステップは、ログインしている人の情報を取得することです。ログインしている場合、私たちは彼を気にしません。ログインしていない場合は、この人にログインさせる必要があります。

ナンセンスな話をするのではなく、コードに移動するだけです

ここでは、この強制転送に問題はありません。自信を持って実行し、セッションでユーザー属性を取得できます。ここでは、正常にログインしてこのユーザー属性を付与する必要があります。現在、転送はありません。私たちのプロジェクト。後で行きましょう。追加します。

次に、このユーザーが空の場合はログインさせ、そうでない場合は実行を続行するかどうかを判断します〜

次に、web.xmlに移動して構成します。そうしないと、この機能は有効になりません。構成方法は、ラベル名が異なることを除いて、サーブレットと非常によく似ています。

ログインフィルターを作成し、すべてのリクエストに対応させます。つまり、すべてのリクエストがフィルターに入ります。これは、水がどこから来たかに関係なく、上記の廃水処理プラントの水と同じです。最初のステップ処理する必要があります〜

次に、LoginServletを変更し、ログインが成功した後、セッションにユーザー属性を追加します

次に、プロジェクトを開始してテストし、問題があるかどうかを確認します

ご覧のとおり、このlogin.jspは引き続き入力できます。ここで、success.jspページに入ります。

アドレスsuccess.jspが表示されますが、ログインが表示されているので、アカウントのパスワードを入力してログインします。

ログイン後もこのログインページが表示されていることがわかります。ここで何が起こっているのでしょうか。

実際、これが当てはまります。success.jspを再度要求すると、フィルターによってフィルターで除外されます。ログインがないため、フィルターはログインページに移動します。

次に、アカウントとパスワードを入力してログインすると、まだログイン情報を取得できなかったため、フィルターに再度入力したため、フィルターから再度取得しました。このようにして、無限のループになりました。ログインできません

したがって、ログイン要求を手放す必要があります。要求がログインする場合は、フィルターに無視させます。そうでない場合は、ログインページに転送します。

ログインがなく、要求された/ loginでない場合は、直接/ loginにジャンプさせます。

もう一度テストしてみましょう

OK ~~

 

第二に、リスナー

リスナーは主にデータの変更を監視するためのものです。上記のユーザーログインと同様に、現在ログインしているユーザーを監視できます。

まず、データベースにデータを追加しましょう

次に、しばらくの間、さまざまなユーザーでログインします。リスナーがログインしているユーザーをリッスンしているかどうかを確認しましょう。

次に、リスナーLoginListenerを作成し、HttpSessionAttributeListenerインターフェイスを実装させます。

ログイン情報はセッションに保存されるため、セッションのリスナーをリッスンする必要があります。リクエストまたはアプリケーションの場合は、他のインターフェイスを実装する必要があります。

リクエストをリッスンしたい場合は、ServletRequestAttributeListenerを実装する必要があります

アプリケーションを監視する場合は、ServletContextAttributeListenerを実装する必要があります

では、どうやって聞くのでしょうか?

最初にこれらの3つの方法について説明しましょう。1つはセッションの属性が追加されたとき、聞いてみましょう。削除されたとは削除されたときに聞くことを意味し、置き換えられたとは置き換えられたときに聞くことを意味します〜

コードを追加して設定します。同様に、設定しないと動作しません〜

web.xmlで構成した後、サーバーを再起動できます。効果を見てみましょう。

ログイン後、モニターに効果があることがわかります。これで、再度ログインして、ユーザーにログインできます。

ご覧のとおり、これは交換であり、追加ではありません。

削除したい場合は、セッション内のユーザーの属性をクリーンアップする必要があります。ここには記述せず、すべての人に任せます~~~

 

自分でチェックすることができます。わからない場合は、私に連絡してください。QQ:2100363119

私のウェブサイトを訪問するすべての人を歓迎します:https://www.lemon1234.com

可能であれば、私の公式アカウントに注意してください。それは私のWebサイトにあり、毎日更新されます~~~、Javaを楽しむための無制限のリソース、ありがとうございます〜

最近、ミニプログラムもオープンしました。コードをスキャンして楽しむことができます。

おすすめ

転載: blog.csdn.net/weixin_45908370/article/details/113097311