0

Eclipse で Maven と struts 2 プロジェクトをセットアップしようとしていますが、問題があります。簡単な HelloWorld の例を作成し、その後他の機能を追加することにしましたが、問題が発生しています。


プロジェクトに「struts.xml」パスがあります: src/main/resources/struts.xml

そしてその中に:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <package name="default" namespace="/" extends="struts-default">

        <action name="Login">
            <result>/Pages/Login.jsp</result>
        </action>

        <action name="Index">
            <result>/Pages/Index.jsp</result>
        </action>

        <action name="Welcome" class="com.contactweb.main.Contact">
            <result name="SUCCESS">/Pages/Welcome.jsp</result>
        </action>
    </package>

</struts>

また、パス src/main/web/WEB-INF/web.xml とコンテンツを持つ web.xml があります。

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>ContactWeb</display-name>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

コマンドラインから「mvn clean install」を使用し、.war ファイルをターゲット フォルダーに取得します。その .war ファイルを Tomcat にデプロイします (これも正常にデプロイされます) が、URL を入力するとエラーが発生します:

要求されたリソース (/ContactWeb/Pages/Login.jsp) は利用できません。

url-s のみパスが異なる同じエラー (/ContactWeb/Login.jsp、/ContactWeb/Login.action など)。

私のプロジェクトには、Login.jsp、Index.jsp、および Welcome.jsp があります。それらは以下にあります: src/main/web/Pages

struts2 で URL に .action 拡張子を付ける必要があることをどこかで読んだことがありますが、機能しません。また、なぜ struts.xml にパッケージ名と名前空間があるのですか? 正確に何が必要ですか?私はそれが何を表示しようとしているページのためのものであるかを読みましたか?

4

1 に答える 1

0

まだ十分な情報がありませんが、コメントに収まらないほど間違っています。

  • 古いサーブレット仕様を使用しているのはなぜですか (2.3? さまざまな理由から、少なくとも 2.5 にする必要があります)。
  • 古いバージョンの S2 (2.0? 2.3) を使用しているのはなぜですか?
  • アクションの結果名は、S2 の結果名を明示的に使用しない限りWelcome、ほぼ確実にデフォルトの になります。"success"どのIMOが悪い考えでしょう。
  • 展開先のコンテキストがわからないため、Web アプリへのパスもわかりません。ContactWebコンテキストにデプロイする場合、Loginアクションは at /ContactWeb/Login.action(または、サフィックスがある場合はそれが何であれ) になります。
  • (a) オンにし、(b)トラブルシューティング中devModeにログのレベルを上げる必要があります。DEBUG
  • JSP ページはsrc/main/webapp/Pagesディレクトリに存在しますか? JSP を下に置くことで直接アクセスできないようにするのが一般的であることに注意してくださいWEB-INF。その方法に従うことをお勧めします。
  • 起動ログに、アプリが起動していないことを示すものはありますか?

S2 ガイドのいくつかを読むことをお勧めします。「パッケージ」属性と「名前空間」属性が何を意味するのかわからない場合は、IMO 一歩下がって、Web コンテナーでコードと構成をランダムにスローする前に、いくつかの基本を理解しようとする必要があります。

于 2012-06-02T15:00:03.350 に答える