0

質問があります:

ほら、ユーザーが私のWebページにアクセスしたときに、データベースにあるCookieまたは特別なIDからユーザーに関する情報を取得し、ユーザーがページにいるときに私のページにhello User1などをレンダリングしたいと考えています。

filter.init()ユーザーがサーブレットを要求する前に、この操作を実行する必要がある場所、servlet.init()またはこの特定の情報を取得しても問題ないservlet.doGet()???

ありがとうございました。敬具。

4

2 に答える 2

0

Filter で、メソッド doFilter を使用します

public void  doFilter(ServletRequest request, 
             ServletResponse response,
             FilterChain chain) 
             throws java.io.IOException, ServletException {
//check cookie or anything you want
}
于 2013-10-31T12:56:35.503 に答える
0

通常、フィルタを使用して入力または出力を変換したり、サーブレットの前提条件を設定したりします。

あなたの特定のケースでは、それは非常に単純であるため、おそらくどれを選択しても問題ありません。 ただし、フィルターで認証と承認を実行することは非常に一般的であるため、フィルターで Cookie をチェックしたり、ユーザー情報についてデータベースにクエリを実行したり、それを要求属性として追加したりできます。その後、準備されたリクエスト属性を使用して、サーブレットにメッセージの準備または書き込みの作業を行わせます。原則として、出力をフィルターに書き込みたくありません。

いずれの場合も、initこのタスクにはフィルターまたはサーブレットのメソッドを使用しません。このinitメソッドは、アプリケーション サーバーがオブジェクトを作成するときにフィルターまたはサーブレットを初期化するために呼び出され、すべての要求に対して呼び出される場合と呼び出されない場合があります (実際、すべての要求に対して呼び出されるわけではありませ)。

于 2013-10-31T13:25:07.637 に答える