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ć.
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).
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.
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.
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