myrecruitingsite.com
私があなたの質問を理解しているなら、あなたはあなたがユーザーをリダイレクトすることができるようなJavaEEサイトを持ちたいと思うでしょうmyrecruitingsite.com/main/<username>
。myrecruitingsite.com/main/arg21
、またはにリクエストが行われた場合、リクエストmyrecruitingsite.com/main/geoffreywiseman
を同じサーブレットに送信し、どのユーザー名がリクエストされたかを知りたいと考えています。
Javaサーブレットマッピングは、多くの最新のWebフレームワークのように、複雑なルーティングパターンを直接サポートしていません。myrecruitingsite.com/main/<username>
ユーザープロファイルサーブレットおよびmyrecruitingsite.com/main/<username>/contact
連絡先サーブレットにリクエストを送信するようにweb.xmlを設定することはできません。ワイルドカードマッピングを実行できますが、その後のすべてのルーティング決定は、の外部で実行する必要がありますweb.xml
。
または、ブラウザによって要求されたURLがサーブレットマッピングレイヤーによって解釈される最後のURLにならないように、(通常はサーブレットフィルタを使用して)URL書き換えを行うことができます。これにはフレームワークがありますが、自分で行うこともできます。
基本的に、ワイルドカードを使用してサーブレットマッピングのURLパターン を構成してから、 getPathInfo()をクエリして、残りのワイルドカードを確認する必要があります。それだけでもかなり簡単です。
さまざまなJavaWebフレームワークのいずれかを使用している場合は、ルーティングのための機能と、おそらくすでに必要なことを実行するフロントコントローラーサーブレットがあります。そのシナリオでは、詳細についてフレームワークのドキュメントを確認する必要があります。
一方、サーブレット(またはサーブレット+ jsp)を使用して自分で実行している場合は、単一のサーブレットにワイルドカードマッピングを実行するだけで、機能を追加するとますます大きくなります。おそらく、サーブレットがフロントコントローラーサーブレットとして機能し、ルーティング作業を実行し、後続のすべての作業をプレーンオールドJavaオブジェクト(POJO)に委任する独自のマイクロフレームワークを開発する必要があります。
例として、ルーティングサーブレットは、URLパターン(おそらくJava正規表現で指定されている)と、サーブレットインターフェイスまたは独自の作成の別のインターフェイスを模倣する独自の作成のオブジェクトとの間のマッピングを維持できます。このようにして、web.xmlにバインドされたルーティング決定を担当するサーブレットと、特定の要求の詳細を担当する小さなクラスのネットワークがあります。それは仕事ですが、それはひどく難しいことではありません。