Использование имени проекта для доступа к домашней странице
В моем веб-приложении я должен написать URL-адрес веб-приложения и указать home.jsp
страница, которую я хочу сделать домашней страницей, я хочу знать, как я могу получить доступ к приложению в браузере, просто набрав project's root folder
название.
Я установил welcome-file-list
в web.xml
к home.jsp
что я хочу получить каждый раз, когда я получаю доступ к приложению, но это не помогает. Возможно, потому что я использую инфраструктуру Struts 2, если это возможно, я должен установить welcome-file-list
в struts.xml
? Как мне это сделать?
Еще один вопрос у меня пока. Например, в execute
метод одного action
класс, я хочу два разных результата SUCCESS
или же ERROR
, как
if(message.getMessageBody() != null &&
message.getMessageDestinationEmail() != null &&
message.getMessageHead() != null){
return SUCCESS;
} else
return ERROR;
Я сопоставил ошибку с error.jsp
страница и успех в другой .jsp
страница в struts.xml
как
<action name="message" class="com.mule.basik.action.PostOfficeAction"
method="execute">
<result name="success">/status.jsp</result>
<result name="error">/error.jsp</result>
</action>
Но заполняю ли (в форме браузера) messageHead
messageBody
или нет success
страница (/status.jsp
) возвращается.
Я не уверен, как (когда) Struts2 создает objects
Члены ActionClass
, поэтому я решил объявить non parameter constructor
который создает боб message
(член класса действия), потому что я думал, что для каждого запроса создается экземпляр класса действия, и, таким образом, существует новый экземпляр beans
класс действия имеет (зависит от). Но это ничего не помогало, что я делаю не так? Я думаю, я должен попытаться использовать Log4j и напечатать что-нибудь в методе execute до return SUCCESS
и раньше return ERROR
определить, является ли if
заявление оценивает true
или же false
, но даже если я обнаружу, что это оценивает true
когда вводятся входные данные или нет, я все еще не понимаю, что мне придется делать дальше, чтобы выполнить возврат ERROR
кроме тестирования, как я показал выше.
3 ответа
Можно использовать список файлов приветствия, вы должны настроить его в web.xml
или файл конфигурации веб-сервера по умолчанию - файлы, используемые в качестве файлов приветствия. При доступе к веб-папке, содержащей этот файл, содержимое этого файла будет загружаться веб-сервером независимо от того, как Struts2 отображает эту папку или нет как ее действие. Затем в файле приветствия вы должны поместить код, который перенаправляет на действие. Например index.jsp
это приветственный файл
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
index.jsp
<% response.sendRedirect("showcase.action"); %>
Второй вопрос, который уже обсуждался здесь, - инициализация bean-компонентов в конструкторе - плохая идея, так как конструктор используется контейнером для создания экземпляра действия. В тот момент, когда он это делает, вы не можете получить доступ к некоторым функциям или услугам, потому что они недоступны. Лучше выполнять ленивую инициализацию после того, как действие создано и функции доступны, например, когда действие выполнено. Если вы хотите, чтобы все действия были инициализированы до их выполнения, чем есть Preparable
интерфейс, который по умолчанию реализован ActionSupport
какое действие вы должны расширить и переопределить prepare
метод.
Вы несете ответственность за инициализацию объектов. Другие отправленные объекты могут быть созданы OGNL для заполнения ваших коллекций.
Вы можете использовать Log4j с Struts2, но это требует настройки в проекте и на сервере. В целях отладки вы можете написать System.out
который перенаправляется в большинстве IDE на консоль.
На самом деле, я не знаю, что вы пытаетесь сделать, но обычно возвращаюсь SUCCESS
если ошибок не найдено, или ERROR
если есть ошибки.
Ты можешь использовать welcome-file-list
со стояками также в вашем web.xml:
<welcome-file-list>
<welcome-file>index.htm</welcome-file>
</welcome-file-list>
Поскольку на вторую часть вашего вопроса дан ответ выше, поэтому я не буду вдаваться в подробности, я постараюсь предложить решение для первой части.
Поскольку вы хотите, чтобы все обрабатывалось Struts2, когда кто-то нажимает на ваш URL-адрес, то в этом случае требуется, чтобы мы следовали / выполняли полный поток действий, чтобы Framework получил возможность инициализировать свою внутреннюю структуру.
Вот один из способов сделать это.
вы всегда можете объявить имя действия Struts2 в вас web.xml
файл, и я предполагаю, что ваше первое имя действия welcome.action
вот что нам нужно иметь в web.xml
<welcome-file-list>
<welcome-file>welcome</welcome-file>
</welcome-file-list>
- Теперь создайте пустой
welcome
файл внутри вашегоweb-app
папка. - Создайте приветственное действие, скажем
В последней части вам необходимо настроить приветственное действие в struts.xml
файл или аннотации, как.
<action name="welcome" class="welcomeAction">
<result>welcome.jsp</result>
</action>
Вы можете определить всю логику, которую вы хотите выполнить внутри вашего welcomeAction
Пожалуйста, позаботьтесь об этих точках.
- название действия внутри
struts.xml
Файл должен быть таким же, как у вас в списке файлов приветствия. - Не забудьте создать файл с тем же именем, что и имя вашего приветственного действия в
web-app
папка, так как это трюк, чтобы контейнер называл вас Action.
Надеюсь, что это поможет вам и многим другим, кто имеет такую же проблему.
`