0

Web サイトの電子メール検証リンクに取り組んでいます。ユーザーが登録して個人データの入力を完了すると (すべてのチェックに合格すると)、ユーザー名として入力したアドレスに電子メールが送信されたことを示す jsp ページに送信され、クリックして検証するためのリンクが表示されます。メールアドレス。その部分はすべてうまくいっているので、リンクを生成します(今のところ、ローカルホストを使用しています)。例として次のようになりますhttp://localhost:9999/javawork/msc/validate/?6FRQ8RAT&u=1s3w1Iih64egX01188HT。リンクをクリックすると、jsp ページに移動します。index.jsp検証フォルダーにあります。この時点で、URL 全体を取得して関数に送信し、URL が適切にフォーマットされていることを確認する必要があります (セキュリティ上の理由から)。合格し、フォーマットに問題がない場合は、「?」の直後にある 8 桁のコードを取得する必要があります。また、「u」の値。次に、これらの値を関数に送信して、DB にあるものと一致することを確認します。一致する場合は、DB レコードを検証日で更新して、電子メール アドレスが検証されたことを確認します。

私の質問は、最初に URL 全体を取得して形式を確認する方法です。次に、8 桁のコードと「u」の値を取得する方法を教えてください。オンラインで調べたところ、すべての例で複数の関数またはクラスを作成し、URL クラスを使用する必要があります。そして、彼らは皆、私に URL オブジェクトのインスタンスを作成し、URL 全体を使用して初期化するよう求めています。ただし、これは静的 URL ではありません。登録するユーザーごとに異なります。これは、チェックするランダムな 8 桁のコードを生成し、「u」の値が DB からのマスクされたユーザー ID であるためです。URLから値を取得するまで値が何であるかがわからない場合、値を取得するためにURL全体を初期化する必要がある方法がわかりません。

値と URL 全体を取得する簡単な方法はありますか? 「?」の後にすべてを取得できたとしても、ベース URL はわかっているので、「?」から取得できる場合は、新しい文字列を作成してフォーマットを確認できます。以降。その部分を手伝ってください。ありがとう。

4

2 に答える 2

1

インターフェイス HTTPServletRequest には、URL 全体の形式をチェックするために使用できるStringBufferを返すメソッドgetRequestURLが含まれています。次のjspページで取得できます。

<%=request.getRequestURL()%>

上記で指定したリクエストの形式を使用している場合、2 番目の質問は次のとおりです。

8 桁のコードと「u」の値を取得するにはどうすればよいですか?

その StringBuffer を操作して ? で分割することで回答できる場合があります。& は 8 桁のコードです。または、別のリクエスト メソッド ServletRequest.getParameter(java.lang.String name)を使用します。

ただし、各パラメーターを取得するには、8桁のコードの名前のないパラメーターをどのように処理するかはわかりません。それがどうなるか教えてください。

于 2012-07-27T15:51:10.377 に答える
0

8 桁のコードを名前のないパラメーターと考えないでください。値のないパラメーターと考えてください。

request.getParameterNames() は、8 桁のコードと「u」を提供します。したがって、次のようにループできます。 String code = "";

for(String paramName : request.getParameterNames()) {
    if(!paramName.equalsIgnoreCase("u"))
        code = paramName;
}
于 2013-11-19T16:17:39.077 に答える