package com.thinkgem.jeesite.modules.sys.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import com.thinkgem.jeesite.common.service.BaseService; import com.thinkgem.jeesite.common.utils.StringUtils; import com.thinkgem.jeesite.common.utils.UserAgentUtils; /** * 手機端視圖攔截器 * @author * @version 2014-9-1 */ public class MobileInterceptor extends BaseService implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { if (modelAndView != null){ // 若是是手機或平板訪問的話,則跳轉到手機視圖頁面。 if(UserAgentUtils.isMobileOrTablet(request) && !StringUtils.startsWithIgnoreCase(modelAndView.getViewName(), "redirect:")){ modelAndView.setViewName("mobile/" + modelAndView.getViewName()); } } } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
配置文件spring-mvc.xml:java
<!-- 攔截器配置,攔截順序:先執行後定義的,排在第一位的最後執行。--> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="${adminPath}/**" /> <mvc:exclude-mapping path="${adminPath}/"/> <mvc:exclude-mapping path="${adminPath}/login"/> <mvc:exclude-mapping path="${adminPath}/sys/menu/tree"/> <mvc:exclude-mapping path="${adminPath}/sys/menu/treeData"/> <mvc:exclude-mapping path="${adminPath}/oa/oaNotify/self/count"/> <bean class="com.thinkgem.jeesite.modules.sys.interceptor.LogInterceptor" /> </mvc:interceptor> <!-- 手機視圖攔截器 --> <mvc:interceptor> <mvc:mapping path="/**" /> <bean class="com.thinkgem.jeesite.modules.sys.interceptor.MobileInterceptor" /> </mvc:interceptor> </mvc:interceptors>