Dlaczego Java webapps use.do przedłużenie? Skąd to się wzięło?

Zawsze zastanawiałem się, dlaczego tak wielu programistów Java używa ".do" jako rozszerzenia dla swoich zasobów Web controller (MVC). Przykład: http://example.com/register.do

To nawet nie wydaje się być specyficzne dla RAM, jak widziałem to w projektach Spring MVC i Struts. Skąd wzięła się ta praktyka rozszerzania". do". Dlaczego to zostało zrobione zamiast bez przedłużenia? Czuję, że przegapiłem notatkę Java world na ten temat.

Osobiście wolę nie przedłużać.

Author: L0j1k, 2010-08-30

3 answers

Według mojej wiedzy, ta konwencja została rozpowszechniona przez Struts1. Podręcznik użytkownika przedstawia to tak:

5.4.2 Konfiguracja mapowania ActionServlet

Uwaga: materiał w tej sekcji nie jest specyficzny dla rozpórek. Na konfiguracja mapowania serwletów jest zdefiniowane w Java Servlet Specyfikacja. W tej sekcji opisano najczęstszym sposobem konfiguracji podanie.

Istnieją dwa wspólne podejścia do definiowanie adresów URL, które będą przetwarzane przez serwlet kontrolera -- dopasowanie i rozszerzenie przedrostka pasujące. Odpowiedni wpis mapowania dla każdego podejścia zostaną opisane poniżej.

Dopasowanie przedrostka oznacza, że chcesz wszystkie adresy URL, które się rozpoczynają (po kontekście część ścieżki) o określonej wartości do być przekazywane do tego servlet. Taki wpis może wyglądać tak:

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

Co oznacza, że żądanie URI do dopasuj ścieżkę /logon opisaną wcześniej może wyglądać tak:

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

Gdzie /myapplication jest kontekstem Ścieżka, pod którą znajduje się Twoja aplikacja rozmieszczone.

Z drugiej strony mapowanie rozszerzeń, dopasowuje URI żądania do akcji servlet na podstawie faktu, że URI kończy się okresem, po którym następuje zdefiniowany zestaw znaków. Na przykład, serwlet przetwarzania JSP jest odwzorowane na wzór *.jsp tak, że jest wywoływany do przetwarzania każdej strony JSP to jest wymagane. aby użyć *.do rozszerzenie (co oznacza " do coś") , wpis mapujący byłby wygląda tak:

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

Oraz Prośba o dopasowanie URI do /logon ścieżka opisana wcześniej może wygląda tak:

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

WARNING - framework nie będzie działał poprawnie, jeśli zdefiniujesz więcej niż jeden <servlet-mapping> element dla serwleta kontrolera.

WARNING - Jeśli korzystasz z obsługi nowego modułu od wersji 1.1, możesz należy pamiętać, że tylko rozszerzenie mapowanie jest obsługiwane.

I myślę, że ta konwencja została zachowana (czasami , aby nie zmieniać adresów URL nawet po zastąpieniu Struts1, czasami tylko dlatego, że ludzie byli z niej zadowoleni).

 69
Author: Pascal Thivent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-18 19:05:11

Powszechną praktyką było mapowanie serwletu struts na*. do w sieci.xml, aby przekazać adresy URL do serwletu struts. Na przykład:

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

Naprawdę nie ma powodu, poza konwencją. Jeśli nie używasz rozszerzenia, musisz zrobić trochę magii, aby obsłużyć obrazy i inne treści statyczne w sposób, który nie wpływa na Twój sevlet. Często odbywa się to w load balancer fronting web server.

 8
Author: leonm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-30 03:01:14

To tylko wskazówka bezpieczeństwa!

Dobrą praktyką jest używanie nietypowego rozszerzenia dla kontrolera, w ten sposób intruzi będą musieli poświęcić więcej czasu na znalezienie informacji o stronie.

Więc jeśli zmienisz domyślne rozszerzenie, plus kilka statyk w swoim frameworku, które mogą ujawnić twoją rękę, Twój Framework MVC może być zupełnie nieznany.

Nawet zmiana rozszerzenia na php LUB aspx może być dobrym pomysłem.

Rzeczywiście jest to ochrona przez zaciemnienie, ale to nie jest przeciwieństwo dobrej ochrony. Nakładanie zabezpieczeń przez zaciemnienie na już bezpieczny system może pomóc. Istnieją ciekawe plusy i minusy bezpieczeństwa przez zaciemnienie i kiedy można je wykorzystać w Internecie.
 -2
Author: Alireza Fattahi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-06 04:31:18