Ваш .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) для визуализации.
Надеюсь, это прояснит для вас.