2009-04-08 8 views
3

私はStruts 2を初めて使用しました。このシンタックスを紹介しました(チュートリアルでお勧めします)。Struts2、メソッド= {1}を使用するためのベストプラクティス

<action name="Register_*" method="{1}" class="Register"> 
    <result name="input">/member/Register.jsp</result> 
    <result type="redirectAction">Menu</result> 
</action> 

私はRegister。{1}メソッドを呼び出していることを理解しています。問題は、ユーザーが別の(ランダムな)値を入れて500エラー(エラーとして正しく記録される)が発生することです。

これをどのように防ぐことができますか?

答えて

1

まず、Register。{1}メソッドは呼び出されません。これは、{1} {1}ユーザーが手動で何かにURLを変更した場合、URLが実際に

ので
Register_View 
Register_Edit 
e.t.c. 

であることを意味アクションタイプ(通常などを示し、編集)

かもしれないどこRegister_を呼ぶだろう

Register_methodThatDoesNotExist 

この場合、struts 2はエラーを返します。

これはなぜ問題ですか?ユーザーが手動でURLを改ざんした場合、どの技術を使用するWebアプリケーションでもエラーが返されます(404も)

正確に防止しようとしているのは何ですか?

更新:

500エラーあなたが(任意のルールに一致しない)と、エラーページにリダイレクトし、すべてのアクションをキャッチすることができないようにするには。

http://cwiki.apache.org/WW/action-configuration.html

支柱2のwikiで「ワイルドカードのデフォルト」デフォルトの段落を参照してください。この我々はこのようにそれを使用する私のアプリケーションでは、ストラット構成

+0

はRegister_invalidMethod.actionは、500エラーを返します404. java.lang.NoSuchMethodException:Register.invalidMethod() 無効なURLのようなものによってトリガされる「500」内部エラーを防止したいと考えています。 この構文を深刻なWebアプリケーションでどのように使用できるかわかりません。 – Pool

+0

strutsのドキュメントで、ワイルドカードの詳細を読んでください。あなたが望むものを含め、たくさんのことをするたくさんのきちんとした技があります。 – kazanaki

+0

問題は、最初のワイルドカードと一致するため、500エラーになります。この構文を完全に避けるのが最善だと思いますか? – Pool

8

の終わりである必要があります。

<action name="*/*" class="{1}Action" method="{2}"> 
     <interceptor-ref name="CustomAuthStack" />  
      <result>/pages/{1}/{2}.jsp</result> 
      <result name="input">/pages/error/denied.jsp</result> 
      <result name="logout">/pages/error/denied.jsp</result> 

      <!-- methods that come back to listing after processing --> 
      <result name="remove" type="redirectAction">{1}/list</result> 
      <result name="save" type="redirectAction">{1}/list</result> 
      <result name="enable" type="redirectAction">{1}/list</result> 

    .... 

    </action> 

myapp/users/listのようなスラッシュの場合

でスラッシュを有効にする必要があります
<constant name="struts.enable.SlashesInActionNames" value="true" /> 

がstrus.xmlにあります。

は今、あなたは、標準を持っている:

アクション - > UserAction JSP ----->ユーザー/ list.jsp

など

+0

Struts2がスラッシュの前に*を常にネームスペースとして解釈し、2番目の*をターゲットアクションとして解釈するので、これはうまく見えますが、うまくいきませんでした。 – Akku

関連する問題