Использование имени проекта для доступа к домашней странице

В моем веб-приложении я должен написать 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>

Но заполняю ли (в форме браузера) messageHeadmessageBody или нет 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>
  1. Теперь создайте пустой welcome файл внутри вашего web-app папка.
  2. Создайте приветственное действие, скажем

В последней части вам необходимо настроить приветственное действие в struts.xml файл или аннотации, как.

<action name="welcome" class="welcomeAction">
   <result>welcome.jsp</result>
 </action>

Вы можете определить всю логику, которую вы хотите выполнить внутри вашего welcomeActionПожалуйста, позаботьтесь об этих точках.

  1. название действия внутри struts.xml Файл должен быть таким же, как у вас в списке файлов приветствия.
  2. Не забудьте создать файл с тем же именем, что и имя вашего приветственного действия в web-app папка, так как это трюк, чтобы контейнер называл вас Action.

Надеюсь, что это поможет вам и многим другим, кто имеет такую ​​же проблему.

`

Другие вопросы по тегам