基于spring来检测访问Web页面的设备是很简单的,在这个经验中我们讲到过。通常不同的设备访问我们是通过响应式设计来统一处理各种设备的尺寸的。但是如果希望针对不同的设备,显示不同的内容呢? Spring对于这一点同样提供了很好的支持,来看看如何实现。
准备工作
我们通过一个简单的例子来演示,基于Spring MVC来实现一个简单的HTTP GET请求,访问的地址是:
http://localhost:8080/greeting
- 如果从桌面浏览器访问这个地址,则返回的页面中显示:
Say hello from desktop
- 如果从手机浏览器访问这个地址:则返回的页面中显示
Say hello from mobile
- 如果从平板电脑访问这个地址:则返回的页面中显示
Say hello from tablets
先该准备好开发环境:
- IDE+Java环境(JDK 1.7或以上版本)
- Maven 3.0+(Eclipse和Idea IntelliJ内置,如果使用IDE并且不使用命令行工具可以不安装)
Maven POM文件的设置
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tianmaying.mobilecontent</groupId>
<artifactId>content-for-multiple-device</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>content-for-multiple-device</name>
<description>Demo of serving different content for desktop, mobile and tablet device</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mobile</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
创建Properties文件
Spring Boot能够针对不同设备渲染不同的视图(View),只需要在应用的Properties文件中中稍加配置即可。在src/main/resources/application.properties文件(没有这个文件,则自己创建这个文件)中增加一行:
spring.mobile.devicedelegatingviewresolver.enabled: true
针对一个请求,LiteDeviceDelegatingViewResolver
通过DeviceResolverHandlerInterceptor
识别出的Device
类型来判断返回哪种视图进行响应(桌面、手机还是平板),这一部分大家参考Spring如何识别设备的经验。
在这个例子中, LiteDeviceDelegatingViewResolver
会将请求代理给ThymeleafViewResolver
,作为Spring自身提供的正牌ViewResolver
,相比传统的视图技术如JSP,Velocity等,有不少过人之处,大家可以回顾一下Thymeleaf的介绍以及如何在Spring MVC中使用Thymeleaf。默认情况下,Spring Boot去到**mobile/和tablet/**文件下去寻找移动端和平板端对应的视图进行渲染。当然你也可以在属性文件中进行设置,约定大于配置,没有特别需求用约定就好了。
创建Controller
Spring Boot的请求都是通过Controller的处理的。Controller的实现非常简单:
- 通过
@Controller
标注一个普通的类 - 通过
@RequestMapping
标注一个方法,设置该方法响应的URL地址和方法( 如@RequestMapping(method=GET
) - 在方法中填入Model,返回视图的名称
SayHelloController
package com.tianmaying.mobilecontent;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class SayHelloController {
@RequestMapping("/sayHello")
public String greeting() {
return "sayHello";
}
}
创建视图
最后让我们来创建Thymeleaf的视图模板,这里没什么模型的数据需要填充,只需要显示一句话即可:
sayHello.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'Say hello from desktop'" />
</body>
</html>
接下来我们创建存放移动端模板和平板端模板的目录:
└── src
└── main
└── resources
└── templates
└── greeting.html
└── mobile
└── greeting.html
└── tablet
└── greeting.html
在mobile和tablet目录下的HTML文件,内容大多是一样的,唯一不同的就是<p>
标签,分别为:
<p th:text="'Say hello from mobile'" />
<p th:text="'Say hello from tablet'" />
测试
最后我们通过main()
函数将这个SpringBootApplication
Run起来:
App.Java
package com.tianmaying.mobilecontent;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
大家从不同的设备上访问http://localhost:8080/sayHello就能看到效果了。
相关推荐
Spring Boot和Spring Cloud都是基于Spring Framework构建的,它们利用Spring的模块化设计来实现各自的目标。 Spring Data简化了对各种数据库的访问,包括关系型数据库和NoSQL数据库。Spring Batch则专注于批量处理...
1. **响应式设计**:Bootstrap的栅格系统允许开发者创建适应不同设备屏幕大小的页面布局,确保在手机、平板和桌面设备上的良好显示。 2. **预置组件**:Bootstrap提供了丰富的UI组件,如导航栏、模态框、表单等,...
此外,Spring Web Flow管理Web应用的页面流程,Spring LDAP简化了LDAP操作,Spring Session提供了集群环境下的会话管理,Spring Web Services支持SOAP服务开发,Spring Shell和Spring Roo提供了命令行交互和项目自动...
本文提出的基于Spring Boot的实验室管理系统,是一个现代信息技术与高职教育管理相结合的产物,通过采用先进的开发框架和设计理念,有效提升了实验室管理的效率和准确性,为高职院校的实验室教学和管理提供了有力...
本文将深入探讨如何基于Spring Boot和Spring Cloud实现微服务架构。Spring Boot是Spring框架的一个重要组成部分,它的主要目标是简化Spring应用的初始搭建以及开发过程。通过内置的Tomcat服务器和自动配置特性,...
Spring Boot是Java开发中的一个流行框架,它简化了创建独立、生产级别的基于Spring的应用程序的过程,提供了自动配置和“开箱即用”的特性,使得开发者可以快速构建可运行的应用。 【知识点详解】: 1. **Spring ...
《基于Spring的校园新闻网站设计与实现》是一个深入探讨如何运用Spring框架构建高效、稳定且易于维护的校园新闻信息发布系统的项目。在这个系统中,Spring作为核心框架,为网站的后端逻辑提供了强大的支持,同时也...
【基于Spring+SpringMVC+Druid+Bootstrap的图书馆管理系统】是一个综合性的Web应用程序,它利用了Java技术栈的优势来实现高效、稳定的图书管理。这个系统的核心架构是基于Spring框架,Spring MVC作为其MVC设计模式的...
《基于SpringSecurity的图书借阅系统源代码》是一款利用SpringSecurity框架实现的图书管理与借阅功能的应用系统。SpringSecurity是Java领域内广泛使用的安全框架,它为应用程序提供了全面的安全控制,包括认证、授权...
### 基于Spring Boot在线考试系统的开发与实现 ...通过以上分析,我们可以看出基于Spring Boot的在线考试系统不仅能够满足当前教育信息化的需求,还具备良好的扩展性和稳定性,为未来的在线教育提供了坚实的技术支持。
4. **响应式设计**:虽然Spring Mobile本身不直接支持响应式设计,但它可以配合前端框架如Bootstrap,通过媒体查询(Media Queries)实现页面元素在不同设备上的自适应布局。 5. **移动特性**:Spring Mobile还提供...
本项目的目标是设计一个基于Spring的云笔记系统,通过整合MySQL数据库、MyEclipse开发平台、Tomcat服务器、Spring MVC架构以及MyBatis等技术,实现用户注册登录、笔记管理、笔记本组织和活动分享等功能,以满足不同...
【基于Spring Boot的零食商城系统】是一个结合现代电商趋势与技术的毕业设计项目,旨在提供一个便捷的在线购物平台,满足消费者对零食的多样化需求。本文将深入探讨该系统的设计与实现,主要围绕Spring Boot框架,...
这表明移动端可能主要采用Android原生开发,同时使用Html5来提供跨平台支持,让应用可以在不同的移动设备上运行。Html5的使用可能涉及到WebView组件,允许Android应用加载并运行Web页面。 3. **云服务**:由于文档...
Spring Web Flow提供了页面流程管理,Spring LDAP用于简化LDAP操作,Spring Session则提供了跨服务器的会话管理解决方案,Spring Web Services支持SOAP服务的开发。Spring Shell提供了交互式命令行工具,Spring Roo...
本项目基于Spring Boot技术,结合Java编程语言,提供了一种高效且易扩展的解决方案。下面将详细阐述这个项目的核心技术和实现过程。 1. **Spring Boot简介** Spring Boot是由Pivotal团队提供的全新框架,旨在简化...
因此,构建一个基于Spring框架的云笔记系统,可以提供更加灵活的定制选项,并利用Spring的安全性和稳定性来保障用户数据的安全。 3. 开发技术简介 - MySQL数据库:作为关系型数据库管理系统,MySQL用于存储用户的...
Spring Security 是一款基于 Spring 框架的安全插件,提供了完整的安全性解决方案,包括身份认证(Authentication)、授权(Authorization)以及会话管理(Session Management)等功能。Spring Security 的设计目标是为...
Bootstrap是一个流行的前端开发框架,它提供了响应式布局和丰富的UI组件,可以帮助开发者快速构建美观且适应不同设备的网页。在超市后台管理系统中,Bootstrap被用来设计用户界面,如登录页面、商品管理界面等,确保...