program tip

Java 웹 애플리케이션이 .do 확장자를 사용하는 이유는 무엇입니까?

radiobox 2020. 8. 2. 18:03
반응형

Java 웹 애플리케이션이 .do 확장자를 사용하는 이유는 무엇입니까? 어디에서 왔습니까?


저는 왜 많은 Java 개발자가 ".do"를 웹 컨트롤러 (MVC) 리소스의 확장으로 사용하는지 궁금했습니다. 예 : http://example.com/register.do

Spring MVC 및 Struts 프로젝트에서 보았 듯이 프레임 워크에 고유하지 않은 것 같습니다. 이 ".do"확장 연습은 어디에서 왔습니까? 확장이 아닌 왜 이렇게 되었습니까? 나는 이것에 대한 Java 세계 메모를 놓친 것처럼 느낍니다.

개인적으로 나는 연장을 선호하지 않습니다.


내가 알기로는이 규칙은 Struts1에 의해 확산되었습니다. 사용 설명서는 다음과 같습니다.

5.4.2 ActionServlet 매핑 구성

참고 : 이 섹션의 자료는 Struts에만 해당되지 않습니다. 서블릿 맵핑의 구성은 Java 서블릿 스펙에 정의되어 있습니다. 이 섹션에서는 응용 프로그램을 구성하는 가장 일반적인 방법에 대해 설명합니다.

컨트롤러 서블릿에서 처리 할 URL을 정의하는 데는 접두사 일치와 확장명 일치라는 두 가지 일반적인 방법이 있습니다. 각 접근 방식에 적합한 매핑 항목이 아래에 설명되어 있습니다.

접두사 일치는 컨텍스트 경로 부분 다음에 특정 값으로 시작하는 모든 URL을이 서블릿에 전달하려는 것을 의미합니다. 이러한 항목은 다음과 같습니다.

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

즉, /logon앞에서 설명한 경로 와 일치하는 요청 URI 는 다음과 같습니다.

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

/myapplication응용 프로그램이 배포되는 컨텍스트 경로는 어디에 있습니까 ?

반면에 확장 맵핑은 URI가 마침표로 끝나고 정의 된 문자 세트가 있다는 사실에 기초하여 요청 URI를 조치 서블릿에 일치시킵니다. 예를 들어, JSP 처리 서블릿 *.jsp은 요청 된 모든 JSP 페이지를 처리하기 위해 호출되도록 패턴에 맵핑됩니다 . 확장자 ( "something"을 의미 함) 를 사용하려면*.do 맵핑 항목은 다음과 같습니다.

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

/logon앞에서 설명한 경로 와 일치하는 요청 URI 는 다음과 같습니다.

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

경고 - <servlet-mapping>컨트롤러 서블릿에 둘 이상의 요소를 정의하면 프레임 워크가 올바르게 작동하지 않습니다 .

경고 -버전 1.1 이후 새 모듈 지원을 사용하는 경우 확장 맵핑 만 지원됨을 알고 있어야합니다.

그리고 나는이 규칙이 유지되었다고 생각합니다 (때로는 사람들이 그것에 만족했기 때문에 Struts1을 교체 한 후에도 URL을 변경하지 않는 경우가 있습니다).


struts 서블릿에 URL을 전달하기 위해 struts 서블릿을 web.xml의 * .do에 맵핑하는 것이 일반적이었습니다. 예를 들면 다음과 같습니다.

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

이것에 대한 관례를 제외하고는 실제로 이유가 없습니다. 확장 기능을 사용하지 않으면 이미지와 기타 정적 콘텐츠를 Sevlet으로 보내지 않는 방식으로 처리하기 위해 약간의 마술을 수행해야합니다. 이것은 종종 프론트 웹 서버의로드 밸런서에서 수행됩니다.


보안 팁!

침입자가 사이트에 대한 정보를 찾는 데 더 많은 시간을 소비해야하는 방식으로 컨트롤러에 비정상적인 확장 기능을 사용하는 것이 좋습니다.

따라서 기본 확장명과 프레임 워크에 약간의 정적 요소를 추가하여 손을 드러내는 경우 MVC 프레임 워크를 완전히 알 수 없습니다.

확장을 변경 php하거나 aspx좋은 아이디어가 될 수도 있습니다.

실제로 이것은 난독 화에 의한 보안이지만 좋은 보안과 반대되는 것은 아닙니다. 이미 안전한 시스템 위에 모호하게 보안을 계층화하면 도움이 될 수 있습니다. 난독 화에 의한 보안의 장단점이 있으며 인터넷에서 모두 사용할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/3597582/why-do-java-webapps-use-do-extension-where-did-it-come-from

반응형