2

Spring MVC を使用して Web アプリケーションを構築していますが、URL で受け取ったパラメーターの検証について質問があります。無効なパラメータを検出してユーザーにエラーを表示する最善の方法は何ですか?

「View User Profile」ページがあるとします。表示されるプロファイルは、URL で指定されたユーザー ID パラメーターに基づいています。ID 92 のユーザーのプロファイルを表示するには、次のアドレスにアクセスします。

http://www.somedomain.com/profile.html?id=92

ProfileControlller次のことを行うオブジェクトを作成しました。

  1. オブジェクトidからパラメーターを取得するrequest
  2. UserProfileデータベースからオブジェクトをロードする
  3. UserProfileオブジェクトをモデルに追加する
  4. ModelAndViewモデルと「View User Profile」JSP を使用して を構築する

ユーザーが有効な ID 番号を入力すると、問題なく動作します。私のUserProfileオブジェクトは、JSP を使用して完全に読み込まれ、表示されます。しかし、誰かがユーザー ID-30294を私のページに渡したらどうなるでしょうか? ID が無効な場合、データ アクセス レイヤーは単純にnullオブジェクトを返しますが、わかりやすいエラー メッセージをユーザーに表示したいと考えています。null UserProfileJSP コード内のオブジェクトをチェックすることは、本当に最善の解決策でしょうか?

私はSpringが初めてなので、よくわかりません。オブジェクトでValidatorクラスを使用できる方法が気に入っています。FormController

4

2 に答える 2

5

DAO が null を返す場合は、エラー ページの ModelAndView を返すだけです。

例:

UserProfile profile = userProfileDao.findUserProfileById(userId);
if (profile == null) {
    return new ModelAndView("Error", "message", "Invalid user ID");
} else {
    // process accordingly.
}

Spring 2.5 ディストリビューションでは、samples ディレクトリにある jpetstore アプリケーションを確認してください。アプリケーションを使用した簡単な例については、org.springframework.samples.jpetstore.web.spring.SignonController を見つけてください。

于 2009-01-29T03:40:42.310 に答える
0

多くのコードを書くことを避けたいという欲求から、これを行う方法は、データ アクセスまたはサービス レイヤーのいずれかによって例外がスローされるようにすることです。次に、Web コントローラーによってスローされ、web.xml ファイルで構成されている一般的なエラー ページに移動します。このページには、「ページが見つかりません」などのメッセージが表示されます。

ただし、実際にはドメインと要件によって異なります。私が最近書いたアプリは、ユーザーが自分のアカウントを無効にしたり、ユーザー名を変更したりするオプションを持たないシンプルなソーシャル ネットワークでした。そのため、無効なプロファイルを要求する唯一の方法は、URL をいじることでした。私は、彼らが間違ったことをいじっていることを示すためだけに、より具体的なエラー ページを作成するつもりはありませんでした。

ただし、たとえば、ユーザーにアカウントの無効化を許可した場合は、yawmark のようなアプローチを取り、より具体的なエラー メッセージを表示することをお勧めします。

于 2009-01-29T20:16:12.263 に答える