ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [쇼핑몰 리팩토링] 07 App호환을 위한 수정(URI Pattern)
    카테고리 없음 2024. 3. 19. 17:40

    1. 웹의 *.do 형식 URI 패턴

     

    지금까지는 .do로 들어온 request를 컨트롤러로 매핑했다. 

    웹에서는 struts의 영향으로 .do형식의 uri를 사용하는 경향이 있기 때문이다.

     

    그런데 스마트폰, 앱이 등장했다.

    앱이라는 새로운 개념이라고 해서 브라우저, 앱서버, 프로토콜 등을 다 새로 개발 할 건가?

    2~30년간 크게 발전한 웹의 시스템을 그대로 갖다 쓸 방법을 많은 개발자들이 고민했다고 한다.


    2. 웹 구조를 앱에 적용하기

     

    - Web의 경우

    (브라우저req -> Servlet -> JavaBeans->DB->JavaBeans->Servlet->JSP(View)->브라우저 res)

    절차를 거쳐 브라우저에 렌더링했다.

    여기에서는 브라우저, WAS, 프로토콜 등이 제공되므로 다운로드해서 쓰기만 하면 됐다.

     

    - App의 경우

    반면, App은 사용자가 View(UI)를 이미 가지고있다.(앱 설치) 

    그러므로 서버에서 HTML을 내려보내줄 필요가 없다. Model(Data)만 전달해주면 된다.

    이 Data가 바로 App에서 'API'라고 부르는 것들이다.

     

    - 웹 구조를 활용

    Web의 설계를 App에서 쓸때는, JSP와 같은 화면단을 거칠 필요가 없는 것이므로 

    (앱 Request -> Servlet -> JavaBeans->DB->JavaBeans->Servlet->앱 Request )

    와 같은 순서로, Model(Data)만 클라이언트에 주면 된다.


    3. URI Pattern

     

    웹 구조를 그대~로 사용하면서, Model만 내려보내주도록 바뀐 것이므로

    서버단에서 수정할 내용이 많지는 않다.

     

    단지, web Request와의 구분을 위해

    web.xml에서 url-pattern을 /*.do에서 /app/*형식으로 바꿔보았다.

    (사실 어떻게 하든 개발자 마음!)

    ==> 변경 전 /*.do (기존에 Web만 서비스 할 때)
    
    <servlet-mapping>
    	  <servlet-name>action</servlet-name>
    	  <url-pattern>/*.do</url-pattern>
    </servlet-mapping>
    ==> 변경 후 /app/* (App에도 서비스 한다고 가정하고 변경)
    
    <servlet-mapping>
    	  <servlet-name>action</servlet-name>
    	  <url-pattern>/app/*</url-pattern>
    </servlet-mapping>

     

    이에따라 컨트롤러 매핑부분에서도 .do를 모두 지워주었으며, 

    jsp에서 form을 전송했을때도 .do로 Request하던 게 있다면 그 부분을 지워주었다.

     


     

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

     

    그런데 사실 그냥 위와 같이 모~든 request를 DispatcherServlet이 처리하도록 할 수도 있다.

    다만, 이렇게 받을 경우 HTML뿐만 아니라 Image, javascript파일과 같은 모든 정적파일들이 들어올 수 있으므로

    이들Request에 대해서는 따로 처리를 해주어야 한다.

     

     

    ==> 컨드롤단의 Meta-Data인 common-servlet에 아래 내용을 기술하였다.	
        
    <mvc:resources mapping="/css/**" location="/css/" />
    <mvc:resources mapping="/images/**" location="/images/" />
    <mvc:resources mapping="/javascript/**" location="/javascript/" />

     

    이렇게 css, images, javascript등을 구분해줘도 되고,

    실제 PJT에서는 resources폴더에 이들을 모두 넣어 아래와 같이 관리하는 경우가 많다고 한다.

    <mvc:resources mapping="/resources/**" location="/resources/" />
Designed by Tistory.