Spring Boot中优雅的判断请求来源设备并跳转对应的页面-Site preference

  在Spring Boot中优雅的判断请求来源设备并跳转对应的页面-Device detection这篇文章中已经对Spring Mobile有过简单的介绍,这里介绍的是Spring Mobile的另一种类似的方法:Site preference

  本文示例代码基于Spring Boot 2.2.7JDK1.8
  全部代码Gitee地址:https://gitee.com/qiwan/spring-mobile-demo

1.首先在pom.xml中引用以下依赖:

<dependency>
	<groupId>org.springframework.mobile</groupId>
	<artifactId>spring-mobile-device</artifactId>
	<version>2.0.0.M3</version>
</dependency>

<!-- 以上引用的jar包不在maven库中,故需要在pom.xml中添加以下库 -->
<repositories>
	<repository>
		<id>spring-milestones</id>
		<name>Spring Milestones</name>
		<url>https://repo.spring.io/libs-milestone</url>
		<snapshots>
			<enabled>false</enabled>
		</snapshots>
	</repository>
</repositories>

2.创建WebMvcConfig类实现WebMvcConfigurer接口,并重写addInterceptorsaddArgumentResolvers两个方法:

import java.util.List;

import org.springframework.context.annotation.Configuration;
import org.springframework.mobile.device.DeviceResolverHandlerInterceptor;
import org.springframework.mobile.device.site.SitePreferenceHandlerInterceptor;
import org.springframework.mobile.device.site.SitePreferenceHandlerMethodArgumentResolver;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
	
	@Override
	public void addInterceptors(InterceptorRegistry registry) {
	    registry.addInterceptor(new DeviceResolverHandlerInterceptor());
	    registry.addInterceptor(new SitePreferenceHandlerInterceptor());
	}
	@Override
	public void addArgumentResolvers(
	        List<HandlerMethodArgumentResolver> argumentResolvers) {
	    argumentResolvers.add(new SitePreferenceHandlerMethodArgumentResolver());
	}
}

3.创建Controller类并编写方法:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.mobile.device.site.SitePreference;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/")
public class SiteController {
	
	private static final Logger log = LoggerFactory.getLogger(SiteController.class);
	
	@RequestMapping("site")
	public String site(SitePreference sitePreference) {
		if (sitePreference == SitePreference.MOBILE) {
			log.info("========请求来源设备是手机!========");
			return "mobile/index";
		} else if (sitePreference == SitePreference.TABLET) {
			log.info("========请求来源设备是平板!========");
			return "tablet/index";
		} else {
			log.info("========请求来源设备是其它!========");
			return "index";
		}
	}
}

4.三个index.html页面所在的目录结构如下:

src/main/resources
	--static
	--templates
		--mobile
			index.html
		--tablet
			index.html
		index.html
	application.properties

启动服务并从多端浏览器发起请求,可发现方法跳转到了对应的页面。

本系列上一篇:
Spring Boot中优雅的判断请求来源设备并跳转对应的页面-Device detection

本系列下一篇:
Spring Boot中优雅的判断请求来源设备并跳转对应的页面-Device aware view

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值