Loading [MathJax]/extensions/tex2jax.js

Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Java

TwitterのAPIでハッシュタグからツイートを探すJavaプログラムのご紹介

投稿日:2021年2月5日 更新日:

<目次>

(1) TwitterのAPIでハッシュタグからツイートを探すJavaプログラムのご紹介
 (1-1) プログラムの概要
 (1-2) サンプルプログラム
 (1-3) 操作イメージ

(1) JavaでTwitterのAPIの使い方入門

本記事はTwitterのAPIを使って、ハッシュタグに関連するツイートを検索するJavaプログラムをご紹介します。

(前提事項)
①TwitterAPIの利用申請が完了している
②Twitter4jのライブラリがサーバにある
③空の動的Webプロジェクトを作成しており、上記②のライブラリをビルドパスに含めている

もし上記の前提が未完了の場合は、先に「コチラの記事」をご覧下さい。

(1-1) プログラムの概要

まずはプログラムの全体像を簡単にご紹介します。ざっくり3つの部品があります。

①View1:検索画面
 ⇒ ハッシュタグを入力し、検索開始する画面

②View2:検索結果画面
 ⇒ 検索結果を表示する画面

③Controller:サーブレット
 ⇒ キー認証、ハッシュタグの検索実行、結果の格納

(図111)

目次にもどる

(1-2) サンプルプログラム

上記3つの部品について、それぞれのサンプルプログラムをご紹介します。

①View1:TwitterToolHome.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" %>
  2. <%@ page import="java.util.List" %>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <label>Enter the "Hash Tag" you want to search.</label>
  11. <form action="./twitter" method="post">
  12. #<input type="text" name="searchTarget" id="tweets">
  13. <input type="submit" value="send">
  14. </form>
  15. </br>
  16. </body>
  17. </html>


②View2:TwitterToolResult.jsp

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@ page import="java.util.List" %>
  3. <!DOCTYPE html>
  4. <%
  5. List<String> searchResult = (List<String>)request.getAttribute("result");
  6. %>
  7. <html>
  8. <head>
  9. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  10. <title>Insert title here</title>
  11. </head>
  12. <body>
  13. <%
  14. for(int i=0; i<searchResult.size(); i++){ %>
  15. <div class="resultOutput">
  16. <%=searchResult.get(i) %>
  17. </div>
  18. <%}%>
  19. </body>
  20. <a href="TwitterToolHome.jsp">Back To Query Screen</a>
  21. </html>

 

③Controller:TwitterServlet.java

  1. import java.io.IOException;
  2. import java.util.List;
  3. import java.util.*;
  4.  
  5. import javax.servlet.RequestDispatcher;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.annotation.WebServlet;
  8. import javax.servlet.http.HttpServlet;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11.  
  12. import twitter4j.Query;
  13. import twitter4j.QueryResult;
  14. import twitter4j.Status;
  15. import twitter4j.Twitter;
  16. import twitter4j.TwitterException;
  17. import twitter4j.TwitterFactory;
  18. import twitter4j.conf.ConfigurationBuilder;
  19.  
  20. /**
  21. * Servlet implementation class TwitterServlet
  22. */
  23. @WebServlet("/twitter")
  24. public class TwitterServlet extends HttpServlet {
  25.  
  26. /**
  27. * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  28. */
  29. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  30.  
  31. //####(1)変数定義など
  32. //# エンコーディング方式の設定
  33. request.setCharacterEncoding("UTF-8");
  34. //# 検索対象キーワードの取得
  35. String searchTarget = "#" + request.getParameter("searchTarget");
  36. //# 遷移先画面
  37. String forwardpage = "./TwitterToolResult.jsp";
  38.  
  39. //####(2)設定の取り込み (ConfigurationBuilderクラス)
  40. //# インスタンス生成
  41. ConfigurationBuilder cb = new ConfigurationBuilder();
  42. //# キー情報の設定
  43. cb.setDebugEnabled(true)
  44. .setOAuthConsumerKey("[ご自身のOAuthConsumerKey]")
  45. .setOAuthConsumerSecret("[ご自身のOAuthConsumerSecret]")
  46. .setOAuthAccessToken("[ご自身のOAuthAccessToken]")
  47. .setOAuthAccessTokenSecret("[ご自身のOAuthAccessTokenSecret]");
  48.  
  49. //####(3)各種Twitterインスタンスの生成
  50. //# ファクトリクラスのインスタンス生成
  51. TwitterFactory tf = new TwitterFactory(cb.build());
  52. //# Twitterクラスのインスタンス生成
  53. Twitter twitter = tf.getInstance();
  54.  
  55. //####(4)ハッシュタグによる検索
  56. //# ハッシュタグの検索用クラス(Query)
  57. Query query = new Query();
  58. //# クエリ生成(検索対象のワードをセット)
  59. query.setQuery(searchTarget);
  60. //# 検索結果の格納用
  61. QueryResult queryResult = null;
  62. //# クエリの発行・結果格納
  63. try {
  64. queryResult = twitter.search(query);
  65. } catch (TwitterException e1) {
  66. e1.printStackTrace();
  67. }
  68. System.out.println("Hit Num:"+queryResult.getTweets().size());
  69. //# 最終結果の格納用
  70. List result = new ArrayList();
  71. //# 検索結果から1Statusずつ、ツイート内容を最終結果に格納
  72. for(Status tweet : queryResult.getTweets()) {
  73. result.add(tweet.getText());
  74. }
  75. //####(5)結果格納・画面遷移
  76. //# 結果をリクエストオブジェクトにセット
  77. request.setAttribute("result",result);
  78. //# 画面遷移
  79. RequestDispatcher dispatch = request.getRequestDispatcher(forwardpage);
  80. dispatch.forward(request, response);
  81. //doGet(request, response);
  82. }
  83.  
  84. }

目次にもどる

(1-3) 操作イメージ

上記のサーブレット+JSP2個を実装すると次のように、画面からハッシュタグでツイートを検索できます。

①検索するハッシュタグの入力
検索したいハッシュタグをテキストボックスに入力します(#は含めない)。
(図131)

②検索の実行
ボタンを押して検索を開始します。
(図132)

③検索結果の確認
遷移した画面でハッシュタグに関連するツイートが表示されます。
(図133)

(操作動画)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Java

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

JSP/Servletでcsvをダウンロードする機能を作成する手順

<目次> (1) JSP/Servletでcsvをダウンロードする機能を作成する手順  (1-0) 実現方針  (1-1) STEP1:Servletの追記  (1-2) STEP2:JSPの追記   …

JSP/Servletで値を受け渡す方法(画面に入力された値を画面遷移で渡す方法)

<目次> (1) JSP/Servletで値を渡す方法(画面に入力された値を画面遷移で渡す方法)  (1-1) 構文  (1-2) サンプルプログラム (1) JSP/Servletで値を渡す方法(画 …

Javaでdouble型での誤差を対処する方法について+サンプルプログラムも紹介

(1) Javaでの誤差の対処法  (1-1) 対処が必要なケース  (1-2) 対処の方法   (1-2-1) BigDecimalクラスでの対処   (1-2-2) int型を優先的に使い対処   …

JDKのインストール手順+どれを選択すれば良いか?&確認の方法は?をご紹介

  <目次> (1) JDKのインストール手順+どれを選択すれば良いか?&確認の方法は?をご紹介  (1-0) STEP0:JDKのインストールでどれを選択すれば良いか?  (1-1) ST …

「サーブレットコンテナ」や「サーブレットのライフサイクル」とは?(サンプルプログラム付)

※本記事は「サーブレットとは?その役割やHelloWorldサンプルコードのご紹介」の続編です。 (0)目次&概説 (2) サーブレットコンテナの基本  (2-1) サーブレットコンテナとは?  (2 …

  • English (United States)
  • 日本語
S