2010-12-14 7 views
0

私はStruts2でプロジェクトを開発しています。私はWeb側のJSPを使用します。私は自分のアプリケーション用にMySQLデータベースを使用しています。私のURLはlocalhost/xxxのようなものですか?name.action?blablabla ...これの代わりに私はURLをリダイレクトしたいと思います。例えば、私のURL上のname.actionの代わりに、私はlocalhost/nameなどを使用したいと思う。また、.htaccessを使って、私はStruts2側の私のアクションのために、name.action?Id = $ 1 ...のようにデータを送信したいと思っています。しかし、私はURLをリダイレクトできませんでした。私はドキュメントルートを適切に定義できませんでした.htaccessファイル。どうすればいいですか、それを段階的に説明できますか?.htaccessを作成する

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

答えて

1

設定は、使用するJava EEサーバーのブランドによって異なります。 Apache Tomcatは、Apache Webサーバーとの非常に優れたAJP統合を備えているので、この設定例で使用する予定です。

あなたは、ApacheでURLの再マッピングを行いたいと書いています。私はあなたのアプリケーションにURLを動的に生成することを非常に困難にするので、強くアドバイスします。そのフレームワークのリンク生成サポートを維持するために、WebフレームワークのURLマッピング機能をうまく使用することができます。

私はStrutsに精通していませんが、この基本機能をサポートしていない場合は、Stripes frameworkまたはより複雑なSpring MVCフレームワークに切り替えることをお勧めします。さらにJSPを使いたいと書いているので、MVC patternを使ってこれらのフレームワークをサポートすることをお勧めします。つまり、URLをアクション/コントローラオブジェクトにマップし、決してJSPファイルに直接マップすることはありません。

.htaccessの設定は、着信URLの末尾が.actionのものをJava EEサーバーに渡します。 URLは、(オプションの)パラメータを含む要求されたURLとまったく同じように渡されます。ポートがJava EEサーバーのAJPリスナーポートであることを確認してください(または、設定したポートに変更してください)。

# Example .htaccess 
# 
# Please make sure 8009 is the port number of your Java EE server 
RewriteEngine On 
RewriteBase/

RewriteRule ^(.*\.action)$ ajp://127.0.0.1:8009/$1 [P,QSA,L] 

また、Apacheを正しく設定していることを確認してください。たとえば、あなたが正しいモジュールを構成しておく必要があり、これらは(あなたがすべてのそれらを必要としないかもしれませんが)、私が有効になっているものです:Struts2の現在のバージョンを使用している場合

LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 
LoadModule rewrite_module modules/mod_rewrite.so 
+0

答えはどこですか? –

+0

私はhttpd.confでそれらを有効にしました。しかし、私が.htaccessファイルをどこに置くか、どのようにポートを8009に設定するのか? – kamaci

+0

.htaccessはApache WebserversのWebサイトディレクトリのルートに置かれます(WEB-INFではなく!)。ポート8009はデフォルトのポート番号です(それ以外の場合はconf/server.xmlで設定します)。同じサーバーにない場合は、このポートをファイアウォールで開く必要があります。 – Kdeveloper

0

、あなたが設定する必要があります2.2.1あなたのアプリケーションは:http://struts.apache.org/2.2.1/docs/create-struts-2-web-application-using-maven-to-manage-artifacts-and-to-build-the-application.html "web.xml Servlet Filter"のページを検索してください。 "name"と "name.action"の両方が "name"アクションへの有効なマッピングです。 URLパラメータに関しては、これはstrutsフォームタグで自動的に処理されます。 struts.apache.org Webサイトの基本チュートリアルとタグ参照の例ドキュメントルートは通常、プロジェクト名からIDE経由で設定されます。さらにコンパイルすると、アプリケーションサーバー/ WebコンテナのWebインターフェイスからWARを展開するときにIDEが作成されます。ドキュメントルートの変更通常は、インストール中にインストールごとに簡単に設定可能です。

+0

どのIDEを使用していますか? Netbeansの場合は明示的な指示が必要ですが、そうでなければこれを更新して一般的な指示をする時間があります。 – Quaternion

+0

Intellij IDEA 9.0.3 – kamaci

+0

を使用しています。IntellijがMavenサポートを持っていると仮定します。ビルドにMavenを使用していますか? – Quaternion

0

Struts2で.action拡張子を使用する必要はありません。別の内線番号または内線番号を選択することができます(これは、好きなように聞こえます)。

+0

.htaccessファイルにもデータを投稿したい。たとえば、RewriteRule^name/something $ /name.action?type=nameOfType – kamaci

0

スティーブンあなたは、JSPからStrutsアクションを呼び出すときだけ、アクション名を使用する権利

を言っています。

アンカータグ内にhref="actionName.action"の代わりにhref="actionName"が含まれています。

関連する問題