OKJSP에 이 글을 올리면 짤리는 글입니다. 이유는 아래에 설명합니다.
초보자분들이 자바웹(스프링/정부표준 등)에 입문하실 때
강사나 선배 개발자분들이 표준을 가르칩니다.
그때 가장 질리게 들을 확장자가 .do 이고, 항상 .do 로 끝나야 한다고 하죠.
몇번 프로젝트할 때 이게 업무표준일 줄 알았지만,
스트럿츠 하면서 저도 의문점을 가지게 됐습니다.
왜 확장자를 반드시 .do 로 해야 하는가.
StackOverflow 에 해답이 있었습니다.
여기서 채택된 답변을 보시면,
스트럿츠 1 사용자 가이드가 있었습니다. 스트럿츠 1은 나온지 10년이 넘었고, 그때 당시에는 자바 웹 개발자들에게는 정말 단비같은 프레임워크였죠.
지금은 스프링만의 Resolver가 강력해지고 다른 강력한 템플릿 엔진이 있어서 잘 안쓰긴 하지만, 스트럿츠에 한번 빠진 선배 개발자라면 계속 스트럿츠 씁니다. 심지엇 2가 나온지도 오래됐는데도 1 고집하는 분도 봤습니다.
어쨌든, 이 스트럿츠에서는 확장자를 do로 하라고 (주:do something - 뭔가 수행해라) 가이드에서 가르치고 있습니다.
<servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern></servlet-mapping>
그렇다면 왜 이렇게 가이드를 냈을까요?
정답은 바로 "다른 서블릿과 URL 충돌을 막기 위해"서 그렇습니다.
JSP 서블렛을 배우면 특정 URL에 서블릿 매핑을 실습해봤을 겁니다.
스프링이 재대로 정착되지 않았을 때, 스프링이 있어도 스트럿츠와 같이 써야 했던 시절이 있었는데, 다른 서블릿을 쓰는데 이와 충돌하지 않기 위해서 .do 로 끝나는 매핑을 가이드했죠.
하지만 요즘은 스프링이 워낙 강력해서 스프링 외 별도 서블렛 매핑을 할 필요가 없어졌으니 다른 별도의 서블릿이 굳이 필요가 없게 되고, JSP 자체에서도 3.0 에 어노테이션 매핑이 지원되면서 의미가 상당히 퇴색됐습니다.
즉, 2000년대 초창기 자바 웹 개발자들에게 .do 는 역사적인 확장자라 봐도 과언이 아니죠.
하지면 WAS도 이제 매핑에 강력해지고, 요즘 서블릿 따로 안쓰고 Spring으로 통일하거나 Play! 라는 다른 웹 프레임워크도 나온 상황입니다.
하지만 여기에 익숙했던 개발자나 강사는 확장자를 .do 로 하라고 가르치죠.
스프링을 가르치거나, 정부표준을 가르치거나.
정부표준 기본 세팅에서 URL 확장자가 항상 .do 로 끝나도록 매핑한 이유 또한 이 역사 때문입니다.
한마디로 관행이고, 이게 한국에서는 "표준"인양 취급을 하고 있죠.
요즘은 검색과 경량화 두마리 토끼를 잡는 REST URL이 대세이긴 하지만,
아직도 do를 고집하고 있는 개발자들이 상당히 많습니다.
그래서 왠만한 정부 사이트들이 모두 이 관행이 반영되어 .do 로 끝나는 URL을 흔히 볼 수 있을 겁니다.
초보자분들은 이 .do를 왜 쓰는지 궁금하다면 제 글을 보시면 됩니다.
저도 왜 궁금했는지 OKJSP에 올린 적 있었지만 아무도 시원한 답변을 주지 못해 제가 직접 구글링 하고 물어보고 해서 나온 허무한 결과입니다.
그냥 그렇게 아세요. 그저 전통적인 관행일 뿐입니다.