2

Strutsでファイルの場所を見つける方法を知りたいです。ファイルが配置される場所 プログラムの一部を次に示します。

<filter-mapping>
    <filter-name>LoginFilter</filter-name>
    <url-pattern>*.do</url-pattern>
 </filter-mapping>

 <servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  <init-param>
   <param-name>config</param-name>
   <param-value>/WEB-INF/struts-config.xml</param-value>
   </init-param>
   <load-on-startup>2</load-on-startup>
 </servlet>

.doプロジェクト内のファイルの拡張子になることはわかっていますが、その場所がわかりません。ストラットについては何も知りません。

前もって感謝します

4

2 に答える 2

3

あなた.doの URL パターンは (@Jigar Joshi が言及) であり、マップされている場所を確認するには、ブラウザーで URL を確認する必要があります。

あなたが を持っていると仮定するとhttp://localhost:8080/myapp/login.do.doは Web コンテナによって認識され、Struts Servlet を呼び出しますorg.apache.struts.action.ActionServlet

次に、StrutsActionServletは相対パスを確認し(/login私が..doconfig/WEB-INF/struts-config.xml

そこから、StrutsActionServletは次のような相対パスに一致するアクション パスがあるかどうかを確認します。

<action path="/login" type="com.myapp.action.LoginAction" name="LoginForm" scope="request">

</action>

それ<action>が見つかった場合、Struts はcom.myapp.action.LoginActionクラスを呼び出してexecute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exceptionメソッドを呼び出します (クラスが単純なActionクラスの場合)。

これが役立つことを願っています。


要素の中に、<action>と呼ばれる別の要素が見つかる場合があります<forward>。例:

<forward name="FHome" path="/content/jsp/home.jsp" />

forwardname属性は基本的に、Struts アクションが を返すときに呼び出すものでActionForward、次のようなコードです。

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
     return mapping.findForward("FHome");
}

要素のforward内側はローカル転送と呼ばれることに注意してください。グローバルフォワードはエレメントの外に座ります。actionstruts-config.xmlaction

要素のはpathforwardレンダリングするために Struts が呼び出す必要のある jsp ページ (および Web/サーブレット コンテナー) の相対パスです。

これで問題が解決することを願っています。

于 2011-04-15T10:40:14.973 に答える
0

.do は、プロジェクト内の任意のファイルの拡張子になることを知っています

いいえ.doURL パターンになります。

特定のアクションをヒットするたび/yourapp/login.doに、ストラットで実行されるはずであり、それがマップされますstruts-config.xml

于 2011-04-15T10:07:44.827 に答える