Java 웹 앱에서 .do 확장자를 사용하는 이유는 무엇입니까?그것은 어디서 난 거야?
왜 많은 자바 개발자들이 웹 컨트롤러(MVC) 리소스의 확장자로 ".do"를 사용하는지 항상 궁금했습니다.예: http://example.com/register.do
봄 MVC와 Struts 프로젝트에서 보았던 것처럼 프레임워크도 구체적이지 않은 것 같습니다.이 확장자 「.do」는 어디에서 유래한 것입니까.왜 이 작업이 연장되지 않고 수행되었습니까?자바 월드 메모를 놓쳤나 봐요.
개인적으로 나는 연장이 없는 것을 선호한다.
제가 알기로는 이 규약은 Struts1에 의해 전파되었습니다.유저 가이드에서는, 다음과 같이 설명하고 있습니다.
5.4.2 Action Servlet 매핑 설정
주의: 이 섹션의 자료는 Struts에만 해당되지 않습니다.서블릿 매핑 설정은 Java 서블릿 사양에 정의되어 있습니다.여기에서는, 애플리케이션을 설정하는 가장 일반적인 방법에 대해 설명합니다.
컨트롤러 서블릿에 의해 처리되는 URL을 정의하는 방법에는 프레픽스 매칭과 내선번호 매칭의 두 가지가 있습니다.각 접근법에 대한 적절한 매핑 엔트리가 아래에 설명되어 있습니다.
프리픽스 매칭은 특정 값으로 시작하는(콘텍스트패스 부분 이후) 모든 URL을 이 서블릿에 전달하는 것을 의미합니다.이러한 엔트리는 다음과 같습니다.
<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>/do/*</url-pattern> </servlet-mapping>즉, 요구 URI가 이 URI에 일치하도록 합니다.
/logon앞에서 설명한 경로는 다음과 같습니다.http://www.mycompany.com/myapplication/do/logon어디에
/myapplication는 어플리케이션이 전개되는 컨텍스트패스입니다한편, 확장 매핑에서는 URI가 마침표로 끝난 후 정의된 문자 집합이 계속된다는 사실에 따라 요구 URI와 액션서블릿을 일치시킵니다.예를 들어 JSP 처리 서블릿은 에 매핑되어 있습니다.
*.jsp요청된 모든 JSP 페이지를 처리하기 위해 호출되도록 패턴을 지정합니다.확장자(즉, "do something"을 의미)를 사용하려면 매핑 엔트리는 다음과 같습니다.<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 이후 새로운 모듈지원을 사용하는 경우 확장 매핑만 지원된다는 점에 유의하십시오.
그리고 이 규약은 지켜지고 있다고 생각합니다(때로는 Struts1을 교체한 후에도 URL을 변경하지 않는 경우도 있고, 사람들이 만족한다는 이유만으로 URL을 변경하지 않는 경우도 있습니다).
URL을 struts servlet에 전달하기 위해 web.xml의 *.do에 struts servlet을 매핑하는 것이 일반적이었습니다.예를 들어 다음과 같습니다.
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
이것에 대한 관례 말고는 정말 이유가 없다.확장자를 사용하지 않을 경우 이미지 및 기타 정적 콘텐츠를 처리하기 위해 sevlet으로 전송되지 않는 방법으로 마법을 사용해야 합니다.대부분의 경우 이 작업은 전면 웹 서버의 로드 밸런서에서 수행됩니다.
언급URL : https://stackoverflow.com/questions/3597582/why-do-java-webapps-use-do-extension-where-did-it-come-from
'programing' 카테고리의 다른 글
| MySQL에서 공백이 있는 열 이름을 선택하는 방법 (0) | 2022.11.11 |
|---|---|
| 페이지를 새로고침하지 않고 양식 제출 (0) | 2022.11.11 |
| 변수 사용 시 느린 sql 문 (0) | 2022.11.11 |
| 10번 베이스에서 26번 베이스로 글자만 표시되므로 26번 베이스는 aa가 됩니다. (0) | 2022.11.11 |
| Javascript에서 unix epoch 이후 시간을 밀리초 단위로 얻는 방법은 무엇입니까? (0) | 2022.11.11 |