問題タブ [front-controller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
4560 参照

design-patterns - Javaサーブレットを使用したフロントコントローラーの実装のベストプラクティス

次の構造のプロジェクトがあるとします。

この時点ではまだフロントコントローラーがないことに注意してください。

いくつかのファセット(「asdf」としましょう)を使用してデプロイした後、次のURLを使用してページにアクセスできます。

main.jspはいくつかのhtmlを生成し、sidearts.jspを含みます(jstl c:importまたはその他の方法で)

そして、フロントコントローラーを追加するとどうなりますか?


いくつかのリクエストのディスパッチを担当し、次のマッピング を持つサーブレットArticlesControllerがあるとします。

これで、URLをリクエストするhttp://localhost:8080/asdf/articles/mainと、ArticlesControllerがこのリクエストを処理し、articles/main.jspを含めようとします。そして、この時点で、/ articles / *がArtsControllerにマップされているため、無限サイクルが開始されます。

説明されている問題の正しい解決策は何ですか?

私の変種は次のとおりです。

1)すべてのjspファイルのマッピングを作成します(受け入れられるとは思いません)

2)ディレクトリ名を変更します(articles-> arts); しかし、その後、(のような)多くの新しいURLを取得http://localhost:8080/asdf/arts/main.jspし、それがバグの原因になる可能性があると思います。

0 投票する
3 に答える
5279 参照

php - Zend フレームワーク: デフォルト ルートの削除

Zend FW 1.9.2 を使用しています。デフォルト ルートを無効にして、独自のルートを提供したいと考えています。デフォルトの /:controller/:action ルーティングは本当に嫌いです。

アイデアは、init でルートを挿入することです。要求が挿入されたルートの 1 つにルーティングできない場合は、エラー コントローラーに転送する必要があります。(デフォルトで登録されている Zend_Controller_Plugin_ErrorHandler を使用)

$router->removeDefaultRoutes(); でデフォルト ルートを無効にするまで、これはすべて正常に機能します。これを行うと、エラー コントローラーはルーティングされていない要求をエラー コントローラーにルーティングしなくなります。代わりに、ルーティングされていないすべてのリクエストをデフォルト コントローラの indexAction にルーティングします。

デフォルトの /:controller/:action ルーティングを無効にして、ルートエラー処理を保持する方法を知っている人はいますか?

基本的に、これは私がしていることです:

0 投票する
1 に答える
249 参照

php - 長いFront Controllerをリファクタリングするには?

フロントコントローラーを使用して、質問のある一連のページをユーザーに送信しています。ページ、質問、およびその他すべてが管理インターフェイスで設定され、データベースに保存されるため、ほとんどすべてが動的である必要があります。

セッションに一意の識別子を保存し、ユーザーが現在いるページをデータベースに保存することで、データベースを介したユーザーの進行状況を追跡しているため、次のページに送信することができます。

問題は、チェックする特別なケースがたくさんあるということです。現在、コントローラーの長さは 300 行を超えており、コードの書き方も不十分で、私が書きました。さらに、今後数週間のうちに、ユーザー生成コンテンツや、ユーザーの出身地に応じて表示するさまざまなページなど、このシステムにさらに多くの機能を追加する必要があります。

このコントローラーは、うまく整理しないとあっという間にぐちゃぐちゃになってしまうのが分かります。

これをリファクタリングするための良い方法やアイデアは何ですか?

0 投票する
2 に答える
582 参照

zend-framework - ディスパッチャの例外の後にリダイレクトするにはどうすればよいですか?

ブートストラップファイル内のzendフレームワークには、次のコードがあります。

代わりに、カスタムコントローラーにリダイレクトしたい醜いメッセージ... $ frontControllerを使用してリダイレクトできない場合、どうすればそれを行うことができますか...?

ご協力いただきありがとうございます..

0 投票する
2 に答える
3870 参照

zend-framework - Zend Framework: デフォルトのルーティングを無効にする方法は?

これを機能させるために何時間も費やしました。そして、私はかなり絶望的になっています。そこに誰かが私を助けることができれば素晴らしいだろう:)

現在、Zend Framework 1.9.5 を使用していますが、これを多くのバージョンで機能させるのに苦労しています。

私がやりたいことは、XML 構成を介して独自のルートを提供し、構成で定義されていないすべてのものが最終的に errorController に到達するようにすることです。(できれば、とから離れてemできるようEXCEPTION_NO_CONTROLLEREXCEPTION_NO_ACTION

これは、デフォルトの /:module/:controller/:action および /:controller/:action ルートを取り除く必要があることを意味すると考えました。

そのため、ルーターに removeDefaultRoutes() を指示すると、これらのデフォルト ルートと一致しなくなります。しかし今、ルーターは、ルーティングされていないすべてのルートを defaultcontroller::defaultaction にルーティングしています (何??)

それで、URIをルーティングできないときにフロントコントローラー(またはその一部)に例外をスローさせる方法を知っている人はいますか?

これを行う理由は、コンテンツの重複を防ぎ、404 ページを改善するためです (この場合、no controller / no action エラーは、not-found ではなく、実際にはアプリケーション エラーです)。

0 投票する
2 に答える
9890 参照

jsp - jsfでユーザーフレンドリーでseoフレンドリーなURLを作成するには?

たとえば、クラス Article にメソッドgetTitle ()とがありgetContent ()ます。

メソッドを使用した ArticlesService もありますgetAllArticles ()。意味のある名前 (で形成#{article.title}) を持つリンクのリストを作成する方法は? お気に入り:

..または同様のもの。

で必要なすべての機能を備えたリンクを作成できますが、適切<h:commandLink>な 'href' を作成する方法がわかりません。常に href '#' が含まれています。

で素敵なリンクを作成できます<h:outputLink>が、必要な機能を追加する方法がわかりません。


jsp で、リクエストから URL を解析し、対応する jsp ページへのリダイレクトを実行する独自のフロント コントローラーを作成しました。

JSFで同じ機能を実現するには?

0 投票する
1 に答える
873 参照

zend-framework - Zendフロントコントローラー

私の Web サイト (単一のサーバー) は単一のエントリ ポイントとしてフロント コントローラー パターンを使用しており、このコントローラーの単一のインスタンスのみが特定の時点 (シングルトン パターン) に存在することを理解しています。

驚いたことに、ピーク時に同時リクエスト/トラフィック (大きな数を想定) を取得した場合、コントローラーのこの単一のインスタンスはスケールアップし、顧客への応答時間に影響を与えることなくすべてのリクエストを処理します。コントローラー インスタンスのプールを作成して、トラフィックに合わせてスケールアップできないのはなぜですか?

ありがとうございました

0 投票する
4 に答える
7617 参照

java - Javaでフロントコントローラーを実装するにはどうすればよいですか?

私は、学習目的でJavaサーブレットを使用して非常に単純なWebフレームワークを作成しています。これは以前にPHPで行ったことがあり、リクエストURIを調べて、適切なクラスとメソッドをインスタンス化することで機能しました。

これはPHPで正常に機能しました。これは、のようなことができるためです$c = new $x; $x->$y;。ただし、これをJavaに変換する方法、またはこれが適切な方法であるかどうかはわかりません。

これまでのところ、私は試しました:

これは、いくつかのルートでは問題ないように見えますが、適切に拡張できるようには見えません。また、構成ファイルからルートを取得することもできません。

どうすれば機能させることができますか?

0 投票する
2 に答える
802 参照

php - 文字列パラメーターへのきれいな URL

私はこのスタイルを使用するウェブサイトを持っています:/index.php?page=45&info=whatever&anotherparam=2

以前のURLを次のように変換するためのきれいなURLを用意する予定です:/profile/whatever/2

.htAccess を使用し、すべてを index.php にリダイレクトする必要があることはわかっています。それはいいです。

私の問題は、index.php (Front Controller) にあります。ページで使用されているすべての既存のコードを引き続き使用できるようにするには$_GET["info"]、どうすれば元に戻すことができますか?$_GET["anotherparam"]$_GET[...]

何らかのコードを使用してヘッダーに GET を戻す必要がありますか、それとも: のようなものを解析して割り当てる$_GET[...]独自の配列を作成して、すべてのページですべてを取り除く必要がありますか?/$myParam["info"] = "whatever"$myParam[]$_GET[]

を使用しているすべてのページを変更したくありません。$_GET[]

編集:

私の .htAccess は次のようになります。

存在しないものはすべて index.php に移動します。私はすでにこの構造を使用しているので、 /index.php?page=45&info=whatever&anotherparam=2何も壊れていません。しかし今、私は使用/profile/whatever/2し、スイッチの場合、どのページに移動するかを決定できますinclude(..)が、問題はすべての GET パラメータにあります。$_GET[] を使用してすべてのページからアクセスできるようにするにはどうすればよいですか?