Есть несколько способов сделать это; Сначала я подробно остановлюсь на ответе Джеймса.
(хотя S2.0 сейчас довольно старый; вот текущий тег действия docs ).
Предоставьте файл login.jsp
(т.е. не помещайте его в WEB-INF
) и используйте тег <s:action>
внутри него, чтобы запустить LoginDecideAction
. Логика внутри действия определяет, что будет дальше, хотя использование техники executeResult="true"
означает, что все, что произойдет, будет в URL-адресе login.jsp
, если только у него нет JavaScript для установки местоположения окна.
IMO, это немного неуклюже (и я не большой поклонник тега action
). Я бы предпочел, чтобы страница JSP немедленно перенаправила на действие, которое либо отображало страницу JSP, либо отображало другую страницу JSP, если бизнес-логика говорит, что это должно.
Вы могли бы предположительно делать то, что говорите, и S2 фактически обрабатывал запрос .jsp
, устанавливая jsp
как расширение, используя свойство struts.action.extension
(см. default struts.properties
файл документации для деталей . Но тогда вам нужно создать для него действие и, возможно, убедиться, что S2 и другие запросы .jsp
не обработаны и т. Д. Вероятно, это не стоит.