ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Mobile] Spring 으로 구현
    Developer/Mobile 2013. 3. 5. 16:12

    필요 jar 

    spring-mobile-device-1.0.1.RELEASE.jar

     

    예제 소스

     

    MobileTest.zip

     

     

    1.context  추가

     

    <mvc:interceptors>
    <bean class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor" />
    <mvc:interceptor>
    <mvc:mapping path="/*" />
    <bean id="SessionInterceptor" class="com.homework.test.interceptor.SessionInterceptor" />
    </mvc:interceptor>
    </mvc:interceptors>

    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="mediaTypes">
    <map>
    <entry key="do" value="text/html" />
    <entry key="json" value="application/json" />
    <entry key="atom" value="application/atom+xml" />
    </map>
    </property>

    <property name="viewResolvers">
    <list>
    <!-- view resolver mobile 겸용 -->
    <bean id="jspViewResolver" class="com.homework.test.resolver.MobileCustomViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
    <property name="order" value="1" />
    </bean>
    </list>
    </property>
    <property name="defaultViews">
    <list>
    <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
    <property name="prefixJson" value="true" />
    </bean>
    </list>
    </property>
    </bean>

     

     

     

     

    2.  자바 소스

     

    public class MobileCustomViewResolver extends InternalResourceViewResolver{
     protected static final Log logger = LogFactory.getLog(MobileCustomViewResolver.class);

     @Override
     protected AbstractUrlBasedView buildView(String viewName) throws Exception {
      Device device = DeviceUtils.getCurrentDevice(RequestContextHolder.currentRequestAttributes());
      if (device.isMobile()) {
       viewName = getMobileViewName(viewName);
      }
     
      return (InternalResourceView) super.buildView(viewName);
     }

     private String getMobileViewName(String viewName) {
      return viewName + "_mobile";
     }

     @Override
     protected Object getCacheKey(String viewName, Locale locale) {
      Device device = DeviceUtils.getCurrentDevice(RequestContextHolder.currentRequestAttributes());
      if (device.isMobile()) {
       return super.getCacheKey(getMobileViewName(viewName), locale);
      } else {
       return super.getCacheKey(viewName, locale);
      }
     }
    }

    'Developer > Mobile' 카테고리의 다른 글

    [Mobile] 고찰.. 시작? 주의사항 모음  (0) 2013.03.04
© 2018 T-Story. All right reserved.