3

私は Struts2 開発が初めてで、最近この命名規則プラグインを使い始めたばかりなので、この問題に苦労しています。

最初は2つのページだけで構成される単純なwebappを作成しようとしています:

  1. ログインページ ( login.jsp)
  2. ホームページ ( home.jsp)

最初にログイン ページがユーザーに表示され、正しいユーザー名とパスワードが提供されると、ユーザーはログインしてホームページにリダイレクトされます。

カスタムログインインターセプターを書き留めて、小さなWebアプリを作成することに成功しました。すべてが正常で、期待どおりに機能しています。HomeActionユーザーが のように(home.jsp以前にログインしていた場合) を直接呼び出そうとすると、ユーザーをログイン ページにリダイレクトできますhttp://myserver/homeAction

次のように JSP に直接アクセスしようとすると問題が発生します。

http://myserver/home

this を使用しているためConvention plugin、Struts はhome.jspプラグインを取得して表示します。成功した結果home.jspとしてのみ表示されるはずなので、これは私が期待した動作ではありません。loginAction

この問題を解決しようとしたこと

まあ、私がグーグルで調べた限りでは、私のJSPを/WEB-INF/ディレクトリ内に置くとアクセスできなくなるはずですが、そうではありません。私のすべてのJSPは/WEB-INF/content/.

私が試したもう1つのことは、JSPリソースへのアクセスをブロックすることでした(*.JSPリクエストのブロック)。にアクセスしようとしている限り、これはトリックを実行しますmyserver/home.jspが、(予想どおり) にアクセスすると失敗しますmyserver/home

編集:この問題についてstackoverflowに別の質問がありますが、答えを理解できません: Struts 2 Convention Plugin and JSP files under WEB-INF

情報の更新: Struts2 コンベンション プラグインは「アクションのない結果」と呼ばれるものを使用しているため、拡張子なしでを呼び出すことでディレクトリJSPs内にアクセスでき、成功時にそれを返すダミー アクションとして処理されます。これは、私が説明しようとしていることを説明するための例です。WEB-INF/contentJSPJSP

ディレクトリに がありhome.jsp、を呼び出すと、Struts2 は結果が になるアクションを「トリガー」します。問題の解決策は、この「アクションのない」結果を無効にすることです。WEB-INF/contenthttp://myserver/homehome.jsp

誰も答えを提供しない場合は、解決策に向かって質問を更新し続けます。

4

1 に答える 1