JSP: форвард Вопрос - PullRequest
       17

JSP: форвард Вопрос

0 голосов
/ 20 октября 2010

Я только начинаю разработку веб-приложений.У меня есть index.jsp с одной строкой.

Что означает

  • указанная выше строка делает?

  • page = "landing.do?" действительно относится к?

  • что означает знак вопроса "? " рядом с "landing.do?" означает?

Как правильно заметил Божо, сервлет с именем "action" сопоставлен для обработки "*. Do" в моем web.xml (как показано ниже),

<servlet-mapping>

    <servlet-name>action</servlet-name>

    <url-pattern>*.do</url-pattern>

</servlet-mapping>

Сейчас

Как мне узнать, что «действие» сервлета соответствует «landing.do» на самом деледелает?

Спасибо.

Ответы [ 3 ]

4 голосов
/ 20 октября 2010

<jsp:forward> перенаправляет клиентский запрос на URL, объявленный в атрибуте page.

Я также должен упомянуть, что в вашем примере вы должны иметь / в качестве первого символа внутри вашегоpage декларация, если вы хотите указать относительный URL, то есть:

Это, по сути, переводится как перенаправление (если localhost)

http://localhost:8080/MyAPP/landing.do? (ваш перевод был бы переведен на http://localhost:8080/MyAPPLanding.do?)

? позволяет добавлять application/x-www-form-urlencoded параметры в ваше объявление.

Подробнее здесь .


Чтобы узнать, что делает landing.do, сделайте следующее:

  • Перейдите в struts-config.xml (находится в папке WEB-INF в вашем проекте)файл и найдите любое действие (<action>), которое path="/landing") атрибут.
  • Как только вы найдете свое действие, есть атрибут с именем type (внутри этого действия).Тип - это имя класса класса действия, которое Struts вызывает для выполнения действия.Имя класса является полностью определенным именем.
  • Откройте файл Java класса (если он существует) и, в зависимости от действия (Action, DispatchAction, LookupDispatchAction), вам нужно будет найтиего сопоставления и посмотрите, какой метод вызывает Struts.
  • В вашем примере мое предположение будет основано на том, что ваш landing.do имеет тип Action.Поэтому прочитайте, что делает метод execute().Все действия на самом деле, execute() по Struts.Другие действия - это просто Template Method шаблонов, которые знают, какой метод вызывать с помощью некоторого сопоставления.
1 голос
/ 20 октября 2010
  • у вас, вероятно, есть сервлет, отображенный для обработки *.do в вашем web.xml
  • ? здесь ничего не значит - обычно он отмечает начало параметров get (например, ?param=value)
  • forward меняет текущую страницу на указанную, при этом клиент не знает, что изменение произошло.
1 голос
/ 20 октября 2010

Эта строка перенаправит пользователя на другую страницу сайта, в частности landing.do

страница = "landing.do?" фактически ссылаются на какую-то страницу сайта landing.do . Я считаю, что эта страница написана с использованием инфраструктуры Struts. (Но могут быть и другие)

что означает вопросительный знак "?" рядом с "landing.do?" ничего не значит в этом случае. Вообще после "?" должен быть список параметров запроса. В этом случае просто не будет параметров.

Обновление: Вы должны найти класс сервлета, который сопоставлен с этим именем сервлета. После этого вы сможете попытаться понять, что делает этот класс сервлетов. Также ознакомьтесь с руководствами или спецификациями Struts, чтобы получить представление о рабочих процессах инфраструктуры Struts.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...