《精通Spring MVC 4》——2.7 结束Hello World,开始获取Tweet

简介: 当然,如果搜索没有得到任何结果的话,这段蹩脚的代码将会因为ArrayOutOfBoundException异常而导致失败。因此,可以抓紧发一条Tweet来解决这个问题!注意,我们在这里使用了Java 8的流来收集Tweet的信息。

本节书摘来自异步社区《精通Spring MVC 4》一书中的第2章,第2.7节,作者:【美】Geoffroy Warin著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.7 结束Hello World,开始获取Tweet

好了,毕竟这本书的名字不是“精通Hello World”,我们结束这一话题。借助Spring,使用Twitter的API进行查询是非常容易的事情。
2.7.1 注册应用
在开始之前,我们需要在Twitter的开发者控制台中注册应用。

访问https://apps.twitter.com,并创建一个新的应用。

根据你喜好为其设定一个名称,在Website和Callback URL区域中,输入http://127.0.0.1:8080(见图2-6)。这样的话,就能在本地机器上,测试开发阶段的应用。

screenshot

图2-6

现在,导航至“Keys and Access Token”,并复制Consumer Key和Consumer Secret,稍后我们会用到它们,参见图2-7所示的截图。

screenshot

图2-7

默认情况下,应用会具有只读的权限,对于该应用来说,这就足够了,但是如果你愿意的话,可以对其进行调整。

2.7.2 搭建Spring Social Twitter
添加如下的依赖到build.gradle文件中:

compile 'org.springframework.boot:spring-boot-starter-social-twitter'
添加如下的两行代码到application.properties中:

spring.social.twitter.appId= <Consumer Key>
spring.social.twitter.appSecret= <Consumer Secret>

这是与刚才所创建的应用相关的key。

我们将会在第6章中详细介绍OAuth。就现在而言,只是使用这些凭证信息发送请求到Twitter的API上,以满足我们应用的需要。

2.7.3 访问Twitter
现在,就可以在控制器中使用Twitter了,将它的名字改为TweetController,从而能够以更好的方式反映其新功能:

@Controller
public class TweetController {

    @Autowired
    private Twitter twitter;

    @RequestMapping("/")
    public String hello(@RequestParam(defaultValue =
"masterSpringMVC4") String search, Model model) {
        SearchResults searchResults = twitter.searchOperations().
search(search);
        String text = searchResults.getTweets().get(0).getText();
        model.addAttribute("message", text);
        return "resultPage";
    }
}

我们可以看到,上面的代码会搜索匹配请求参数的Tweet。如果一切运行正常的话,结果中第一条记录的文本将会显示出来(见图2-8)

screenshot

图2-8

当然,如果搜索没有得到任何结果的话,这段蹩脚的代码将会因为ArrayOutOfBoundException异常而导致失败。因此,可以抓紧发一条Tweet来解决这个问题!

如果想展现Tweet列表的话,那该怎么办呢?让我们修改一下resultPage.html文件:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head lang="en">
    <meta charset="UTF-8"/>
    <title>Hello twitter</title>
</head>
<body>
    <ul>
        <li th:each="tweet : ${tweets}" th:text="${tweet}">Some
tweet</li>
    </ul>
</body>
</html>

screenshot

th:each是由Thymeleaf所定义的标签,它允许我们遍历一个集合并且能够在循环中将集合中的每个值赋给一个变量。
我们也需要修改控制器:

@Controller
public class TweetController {

    @Autowired
    private Twitter twitter;

    @RequestMapping("/")
    public String hello(@RequestParam(defaultValue =
"masterSpringMVC4") String search, Model model) {
        SearchResults searchResults = twitter.searchOperations().
search(search);
        List<String> tweets =
                searchResults.getTweets()
                        .stream()
                        .map(Tweet::getText)
                        .collect(Collectors.toList());
        model.addAttribute("tweets", tweets);
        return "resultPage";
    }
}

注意,我们在这里使用了Java 8的流来收集Tweet的信息。Tweet类包含了很多其他的属性,如发送者、转推的数量等。但是,现在我们尽可能地保持简单,如图2-9中的截图所示。

screenshot

图2-9

相关文章
|
15天前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
32 1
SpringBoot入门(3) - 对Hello world进行MVC分层
|
2天前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
13 4
|
14天前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
本文介绍了如何在Spring Boot项目中实现MVC分层架构,通过将代码划分为controller、service、dao和entity四个部分,实现高内聚低耦合的设计。示例项目包括用户增删查改功能,详细展示了各层的具体实现及运行测试。
26 11
|
13天前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
17 2
|
2月前
|
XML Java 应用服务中间件
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
通过一个HelloWorld实例,介绍了SpringMVC的基本概念、执行流程,并详细讲解了如何创建和配置第一个SpringMVC项目(基于XML)。
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
|
2月前
|
XML Java 测试技术
spring复习01,IOC的思想和第一个spring程序helloWorld
Spring框架中IOC(控制反转)的思想和实现,通过一个简单的例子展示了如何通过IOC容器管理对象依赖,从而提高代码的灵活性和可维护性。
spring复习01,IOC的思想和第一个spring程序helloWorld
|
28天前
|
JSON 前端开发 Java
SSM:SpringMVC
本文介绍了SpringMVC的依赖配置、请求参数处理、注解开发、JSON处理、拦截器、文件上传下载以及相关注意事项。首先,需要在`pom.xml`中添加必要的依赖,包括Servlet、JSTL、Spring Web MVC等。接着,在`web.xml`中配置DispatcherServlet,并设置Spring MVC的相关配置,如组件扫描、默认Servlet处理器等。然后,通过`@RequestMapping`等注解处理请求参数,使用`@ResponseBody`返回JSON数据。此外,还介绍了如何创建和配置拦截器、文件上传下载的功能,并强调了JSP文件的放置位置,避免404错误。
|
1月前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
52 2
|
2月前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
1月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
97 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
下一篇
无影云桌面