Почему веб-приложения Java используют расширение .do?Откуда это? - PullRequest
109 голосов
/ 30 августа 2010

Я всегда задавался вопросом, почему так много разработчиков Java используют ".do" в качестве расширения для своих ресурсов веб-контроллера (MVC).Пример: http://example.com/register.do

Кажется, он даже не относится к фреймворку, как я видел это в проектах Spring MVC и Struts.Откуда появилась эта практика расширения ".do".Почему это было сделано вместо расширения?Я чувствую, что пропустил меморандум о мире Java по этому поводу.

Лично я не предпочитаю расширение.

Ответы [ 3 ]

72 голосов
/ 30 августа 2010

Насколько мне известно, это соглашение было распространено Struts1. В руководстве пользователя это выглядит так:

5.4.2 Настройка сопоставления ActionServlet

Примечание: Материал в этом разделе не относится к Struts. Конфигурация отображений сервлета определено в сервлете Java Спецификация. Этот раздел описывает наиболее распространенные средства настройки применение.

Есть два общих подхода к определение URL, которые будут обрабатывается контроллером сервлета - сопоставление и расширение префикса соответствия. Соответствующая запись сопоставления для каждого подхода будет описано ниже.

Соответствие префикса означает, что вы хотите все URL, которые начинаются (после контекста часть пути) с определенным значением быть переданным этому сервлету. Такой запись может выглядеть так:

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>/do/*</url-pattern>
</servlet-mapping>

, что означает, что URI запроса к соответствовать описанному пути /logon раньше это могло бы выглядеть так:

http://www.mycompany.com/myapplication/do/logon

где /myapplication контекст путь, по которому ваше приложение развертывается.

Сопоставление расширений, с другой стороны, сопоставляет URI запроса с действием сервлет основан на том факте, что URI заканчивается периодом, за которым следует определенный набор символов. За Например, сервлет обработки JSP сопоставлены с шаблоном *.jsp, чтобы он вызывается для обработки каждой страницы JSP это запрашивается. Для использования *.do расширение (что подразумевает "сделать что-то ") , запись сопоставления будет выглядеть так:

<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

и URI запроса, чтобы соответствовать /logon путь, описанный ранее, может выглядеть так:

http://www.mycompany.com/myapplication/logon.do

ПРЕДУПРЕЖДЕНИЕ - Каркас не будет работать правильно, если вы укажете больше чем один <servlet-mapping> элемент для сервлета контроллера.

ПРЕДУПРЕЖДЕНИЕ - Если вы используете поддержку нового модуля начиная с версии 1.1, вы следует помнить, что только расширение отображение поддерживается.

И я думаю, что это соглашение было сохранено (иногда , чтобы не изменять URL-адреса даже после замены Struts1, иногда просто потому, что люди были довольны им).

9 голосов
/ 30 августа 2010

Обычной практикой было сопоставление вашего сервлета Struts с * .do в web.xml для передачи URL сервлету Struts. Например:

<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

На самом деле нет никаких причин, кроме соглашения для этого. Если вы не используете расширение, вам нужно немного поработать с изображениями и другим статическим содержимым так, чтобы они не отправлялись в ваш сервлет. Часто это делается на балансировщике нагрузки внешнего веб-сервера.

0 голосов
/ 20 апреля 2016

Просто совет по безопасности!

Хорошей практикой является использование какого-либо необычного расширения для вашего контроллера, поэтому злоумышленникам потребуется больше времени, чтобы найти некоторую информацию о сайте.

Так что, если вы измените расширение по умолчанию, а также несколько статик в вашей платформе, которые могут раскрыть вашу руку, ваша платформа MVC может быть совершенно неизвестна.

Даже хорошая замена расширения на php или aspx может быть хорошей идеей.

Да, действительно, это защита от запутывания, но это не противоположность хорошей безопасности. В этом случае может помочь распределение безопасности по незаметности поверх уже защищенной системы. Есть интересные плюсы и минусы безопасности путаницы и того, когда их можно использовать в Интернете.

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