CHANGOOS를 개발하면서 .do를 잘못사용한듯 싶다..👊

이해하기를 액션을(EX) 게시글등록하기, 수정하기..) 취할때 .do 확장자를 붙여 URL을 매핑하였다.

왜 이렇게 생각했는진 지금은 모르겠으나, 여튼 그렇게 개발해왔다..

<br/>

하지만, .do를 사용하는 이유를 찾아보니 그렇지 않다. (사실 이 이유도 바람직하지는 않은 것 같다)

Spring 프로젝트를 생성하면 기본설정으로 web.xml 다음과 같이 되어있다.

	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

12번 줄을 살펴보면, 모든 URL 요청을 DistpatcherServlet으로 매핑 것으로 되어있다.

<br/>

이때 URL에 매핑을 바꿔주어.

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

*.do로 오는 URL만 DistpacherServlet으로 매핑되도록 하여 사용한다고한다.

<br/>

즉, Spring이 완전?완벽?품질이굳 하지 않은 시절,

다른 서블릿을 병행하면서, 요청에 대하여 서블릿을 분기하기위해 *.do 확장자를 사용하였다.

그것이 관습이되어, 의미없이 *.do 확장자를 붙이는 것으로 파악된다. <a href="https://okky.kr/article/262795">(참고글)</a>

요즘엔 확장자없이 사용하는것이 대세인듯하다..?

<br/>

뿐만아니라, web.xml 매핑에서 설정해주어야 할것이 하나 있는데

정적 페이지 요청에 대한, 서블릿 매핑 요청을 따로 설정해주어야 한다.

Tomcat은 요청에 해당되는 Servlet이 없을 경우 default Servlet에 매핑시킨다.

webapps를 루트폴더로하여 URL에 매핑 되는 정적소스를 넘겨준다.(EX) .css, .js, .jpg ...etc)

그렇기 때문에 모든 요청을 Distpatcher Sevlet으로 넘기는게 아닌 정적 요청에 대해서는 제외 해주어야한다.

그것을 당시에는 이렇게 구현해준듯 하다.

	<servlet-mapping>
		<servlet-name>default</servlet-name>
		<url-pattern>*.css</url-pattern>
	</servlet-mapping>

<br/>

그러나, Spring은 다음과 같이 해결하도록 업데이트하였다. (3.0 버전 부터인 것으로 파악된다)

Servlet-context.xml의 내용이다.

	<!-- Handles HTTP GET requests for /resources/** by efficiently serving 
		up static resources in the ${webappRoot}/resources directory -->
	<resources mapping="/resources/**" location="/resources/" />
	<resources mapping="/uploaded/**" location="/uploaded/" />

<resource> 태그로 매핑된 요청에 대해서는,

정적 요청으로 간주하고, location에 설정된 위치의 파일에 URL을 붙여 정적소스를 넘겨준다.

태그로 설정함으로써 깔끔하게 정리해주었다.

<br/>

<br/>

이제는 URL을 수정해야겠다..👉👉👉👉

0
이전 댓글 보기
등록
TOP