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

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)。这样的话,就能在本地机器上,测试开发阶段的应用。

图2-6

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

图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)

图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>

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中的截图所示。

图2-9

时间: 2024-10-09 20:16:29

《精通Spring MVC 4》——2.7 结束Hello World,开始获取Tweet的相关文章

《精通Spring MVC 4》——1.5 那就正式开始吧

1.5 那就正式开始吧 现在Web应用已经准备就绪,先看一下它是如何编写的.在进一步学习之前,我们可以将工作的成果保存到Git上. 在Windows下,需要安装Git bash,这可以在https://msysgit.github.io找到.在Mac下,如果你使用homebrew的话,很可能已经安装过Git了,否则的话,使用brew install git命令来进行安装. 如果要使用Git版本化我们的工作内容,那么可以在控制台中输入如下的命令: $ cd app $ git init 使用Int

《精通Spring MVC 4》——第1章 快速搭建Spring Web应用 1.1Spring Tool Suite简介

第1章 快速搭建Spring Web应用 在本章中,我们将会直接接触代码并搭建一个Web应用,本书的其他章节将会基于该应用进行讲解. 在这里,我们将会使用Spring Boot的自动配置功能来构建应用,这样的话,就能完全避免使用样板式的配置文件. 本书中将会使用Gradle和Java 8,但是也不必为此感到担心.如果你还在使用Maven和更早版本的Java的话,相信你会发现这些技术也是很易于使用的. 很多官方的Spring教程同时提供了Gradle构建和Maven构建,因此,如果你决定继续使用M

《精通Spring MVC 4》——2.9 使用WebJars实现质感设计

2.9 使用WebJars实现质感设计 现在,我们的应用已经很棒了,但是在美学方面却差得很多.你可能听说过质感设计(material design),这是Google的扁平化设计. 如图2-10所示,我们将会使用Materialize,这是一个非常漂亮的CSS和JavaScript库,与Bootstrap类似. 图2-10 在第1章中,我们曾经简单介绍过WebJars,现在要开始使用它们了.在依赖中,我们要添加jQuery和Materialize CSS: compile 'org.webjar

《精通Spring MVC 4》——1.6 幕后的Spring Boot

1.6 幕后的Spring Boot 如果你之前搭建过Spring MVC应用,那么可能已经习惯于编写相关的XML文件或Java注解配置类. 一般来讲,初始的步骤如下所示: 1.初始化Spring MVC的DispatcherServlet: 2.搭建转码过滤器,保证客户端请求进行正确地转码: 3.搭建视图解析器(view resolver),告诉Spring去哪里查找视图,以及它们是使用哪种方言编写的(JSP.Thymeleaf模板等): 4.配置静态资源的位置(CSS.JS): 5.配置所支

《精通Spring MVC 4》——2.11 小结

2.11 小结 在本章中,我们学习了如何实现良好的MVC架构,看到了Spring MVC内部的一些运行机制,并通过非常少量的配置使用了Spring Social Twitter的功能.通过使用WebJars,可以设计非常漂亮的Web应用. 在下一章中,我们会要求用户填写其基本信息(profile),这样就能自动获取他们可能感兴趣的Tweet.这也给了我们一个机会来更深入地学习表单.格式化.校验以及国际化的功能.

《精通Spring MVC 4》——2.3 Spring MVC 1-0-1

2.3 Spring MVC 1-0-1 在Spring MVC中,模型是由Spring MVC的Model或ModelAndView封装的简单Map.它可以来源于数据库.文件.外部服务等,这取决于你如何获取数据并将其放到模型中.与数据层进行交互的推荐方式是使用Spring Data库:Spring Data JPA.Spring Data MongoDB等. Spring MVC的控制层是通过使用@Controller注解来进行处理的.在Web应用中,控制器的角色是响应HTTP请求.带有@Co

《精通Spring MVC 4》——2.5 Spring MVC架构

2.5 Spring MVC架构 让我们从这个新的"Hello World"页面后退一步,尝试去理解在这个Web应用中到底发生了什么.为了做到这一点,需要跟踪浏览器所发送的HTTP请求的行程以及它是如何从服务器端得到响应的. 2.5.1 DispatcherServlet 每个Spring Web应用的入口都是DispatcherServlet.图2-3展现了DispatcherServlet的架构. 图2-3 这个一个典型的HttpServlet类,它会将HTTP请求分发给Handl

《精通Spring MVC 4》——2.4 使用Thymeleaf

2.4 使用Thymeleaf Thymeleaf是一个模板引擎,在Spring社区中,它备受关注. 它的成功在很大程度上要归因于对用户友好的语法(它几乎就是HTML)以及扩展的便利性. 如表2-1所示,现在有各种可用的扩展,并且能够与Spring Boot进行集成. 闲言少叙,现在我们将spring-boot-starter-thymeleaf依赖添加进来,这样就能启动Thymeleaf模板引擎了: buildscript { ext { springBootVersion = '1.2.5.

《精通Spring MVC 4》——1.9 小结

1.9 小结 我们现在已经有了一个非常简陋的Spring Web应用,虽然我们没有对其进行什么配置,但是它可以输出RESTful JSON的"Hello world".我们已经看到过Spring Boot做了什么.是如何实现的,也了解到如何重写默认的自动配置. 单是详细介绍Spring Boot如何运行就够写一本书了.如果你想更深入探究的话,我推荐一本很棒的书,这就是由Greg Turnquist编写的<Learning Spring Boot>,它和本书是同一个系列的.