Как узнать местоположение файла в Struts? - PullRequest
1 голос
/ 15 апреля 2011

Я хочу знать, как узнать местоположение файла в 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 будет расширением любого файла в проекте, но я не получаю его местоположение.Я ничего не знаю о стойках.

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 15 апреля 2011

Ваш .do является вашим шаблоном URL, как (@Jigar Joshi упомянул), чтобы увидеть, где он отображается, вам нужно будет посмотреть свой URL в браузере:

Предположим, у вас есть http://localhost:8080/myapp/login.do, тогда .do видит ваш веб-контейнер и вызывает ваш сервлет Struts org.apache.struts.action.ActionServlet.

Struts ActionServlet увидит ваш относительный путь /login (посмотрите, как я проигнорировал .do) и посмотрите, отображается ли он в вашем файле config (в вашем случае /WEB-INF/struts-config.xml).

Оттуда Struts ActionServlet проверьте, есть ли путь действия, который соответствует вашему относительному пути, что-то вроде этого:

<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" />

Атрибут forward name - это в основном то, что вызывает ваше Struts Action, когда возвращает ActionForward, такой код:

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

Имейте в виду, что forward внутри элемента action в struts-config.xml называется локальным форвардом. Глобальный Форвард находится вне элемента action.

path элемента forward - это относительный путь страницы jsp, которую Struts должен вызвать (и контейнер web / servlet) для визуализации.

Надеюсь, это прояснит для вас.

0 голосов
/ 15 апреля 2011

Я знаю, что .do будет расширением любого файла в проекте

Нет , .do будет шаблоном URL.

Всякий раз, когда вы нажимаете /yourapp/login.do, предполагается, что определенное действие выполняется в стойках, и оно отображается в struts-config.xml

...