サーバ実装は、小さな流行照会システム(ウェブ版+ APP)を使用します

  このタスクは必要です:データが前の可視化を組み合わせ、外部ネットワークアクセスサーバの実装と、クロールデータ、及びアクセスデータの電話アプリを作るために。[画像を挿入問題、このブログを書くために、その効果が発揮できないため、いくつかの部分はテキストで説明するには]

  アイデア分析:データの可視化とデータの二週間続くためにタスクコードをクロールする前に、問題は本番サーバとは、アプリを設定することです。私は学生の価格を借りアリクラウドサーバは、アプリが使用Androidのメーカーを作ることができ、解決すべき問題のAndroidは、リモートMySQLデータベースにアクセスすることです。

  Webプロジェクトを、対応するマシンがwarファイルにパッケージ化した後に、アクセスするサーバー上でビルドJDKとTomcatへの必要性をWebプロジェクトを外部のネットワークを達成するために、Tomcatのwebappsのフォルダ内のリモートサーバへのコピー:アクセスへのネットワークの外部にあるサーバーの実装を使用するWebプロジェクトで次の。その後、サーバ情報に設定さ:8080分の8080は、構成規則に参加着信および発信ポートは一度私の中に設定されている、カスタムTCPを安全グループのサーバーインスタンスを検索します。すべて完成し設定した後で、次の方法を使用してでき[のhttp:// +あなたのパブリックIPアドレス+ /プロジェクト名/プロジェクト名xx.htmlまたはxx.jsp]プロジェクトにフォーマット外部ネットワークへのアクセス。

  リアルタイムのデータ更新、データストレージおよびクロール読み取りMySQLのデータベース操作を実現するには、リモートサーバー上のMySQLとPython関連のアプリケーションをダウンロードしたいので、リモートサーバー上で実現するために必要な、私は、MySQLデータベースを使用してMySQL用のNavicatを使用します。3306/3306サーバインスタンスのセキュリティグループ(あなたが接続ポートプロパティから見ることができますNavicatは)カスタムTCPのポート・コンフィギュレーション・ルールを追加します。次のようにソリューションを構成するときに、データベース障害を接続状況があるでしょう。あなたが設定した後、データベース接続は成功です。pythonのクロールの動作は変更されません。使用してJavaリアライズは、データを読み取り、視覚的な操作は、Tomcatのにリモートデスクトップフォルダのwebappsあなたはwarファイルにそれをパッケージ化してから変更してコピーされていない、それはデータベースは、ローカル・データベースが、リモートサーバーの下ではありませんアクセスデータベース。

  アプリは設定:ここでは、問題は、データを取得するために、リモート・サーバのMySQLデータベースにアクセスするために、そのアプリの一般的な検索、ジャンプページと言っていないようなのハイライトです。私は接続されたSQLiteデータベースの会計処理を記述するために使用されるデータベースに接続する方法について考え始め、同じではありません。その後の検査は、次のように、HttpURLConnectionクラス(背景クエリを横断した後、前に転送されているサーブレットの視覚化値によって必要とされる)は、データを取得することができ、そこから、アクセスサーブレットJavaファイルに使用することができますが見つかりました:

  1つの パッケージcom.example.yiqing。
  2  
  3  インポートandroidx.appcompat.app.AppCompatActivity。
  4  
  5  インポートandroid.content.Intent。
  6  インポートandroid.os.Bundle。
  7  インポートandroid.os.Handler。
  8  インポートandroid.os.Message。
  9  インポートandroid.text.method.ScrollingMovementMethod。
10  インポートandroid.view.View。
11  インポートandroid.widget.Button。
12  インポートandroid.widget.TextView。
13  
14  インポートorg.json.JSONArray;
15  インポートorg.json.JSONObject。
16  
17  インポートjava.io.BufferedReader。
18  インポートjava.io.DataOutputStreamのメソッド。
19  インポートにjava.io.IOException;
20  インポートjava.io.InputStreamReader。
21  インポートにjava.io.OutputStream。
22  インポートのjava.net.HttpURLConnection。
23  インポートのjava.net.URL。
24  インポートjava.net.URLEncoder。
25  
26の パブリック クラス時計延びAppCompatActivity {
 27     民間のTextViewショー。
28      民間ボタンが表示さ;
29  
30      // 利用ハンドラ实现更改页面
31      プライベートハンドラハンドラ= 新しいハンドラ(){
 32          公共 ボイドのhandleMessage(android.os.Message MSG){
 33              バンドルのバンドル= 新しいバンドル()。
34              バンドル= msg.getData()。
35              列ANS = bundle.getString( "結果" )。
36              場合(ANS =!NULL ){
 37                  show.setText(ANS)。
38              }
39          }
 40      }。
41      @Override
 42      保護 ボイドのonCreate(バンドルsavedInstanceState){
 43          スーパー.onCreate(savedInstanceState)。
44          setContentView(R.layout.activity_watch)。
45          ショー= (のTextView)findViewById(R.id.show)。
46          show.setMovementMethod(ScrollingMovementMethod.getInstance())。
47          を参照してください= (ボタン)findViewById(R.id.see)。
48  
49          see.setOnClickListener(新しいView.OnClickListener(){
 50              @Override
 51             公共 のボイドのonClick(ビュービュー){
 52です                 // サーブレットパスへの書き込みアクセス
53が                 最終的な文字列のパス=「http://47.98.228.220:8080/PaQu/ChartServlet」;
 54はある                 // 使用HttpURLConnectionの子スレッドが必要です
55                  新しい新しいスレッドを(新しい新しいRunnableを(){
 56は                     @Override
 57は                     公共 ボイドRUN(){
 58                          intentdataテント= ;そのgetIntent()
 59の                         // 入力を取得する一つのページから日付データ
60                          文字列の日付= intentdata.getStringExtra( "日" )。
 61                         MSG =文字列"" ;
 62は                          HttpURLConnectionのコン= nullの;
 63は、                         試してみる{
 64                              URL URL = 新しい新しいURL(パス);
 65                              コネティカット= (HttpURLConnectionの)url.openConnection();
 66                              // 集合ポストフォーマット、この形式のキープサーブレット、一貫性のある
67                              conn.setRequestMethod( "POST" );
 68                              // セットタイムアウト
69                              conn.setConnectTimeout(5000 );
 70                              conn.setReadTimeout(5000);
 71である                             // POST形式がキャッシュは使用できません
72                              (conn.setUseCachesをfalseに73である                              conn.setDoInput(真の);
 74                              文字列データ= "DATE =" + DATE;
 75                              // データは、サーブレット・ライト転送に渡される
76                              OUT =のOutputStream conn.getOutputStream();
 77                              // 送信データのフォーマットを変更することをここで注意、GetBytesメソッド()
78                              out.write(data.getBytes());
 79                              out.flush();
 80                              out.close()。
81                              conn.connect();
 82  
83                              // ここでは、サーブレットからバックパスがデータ受信
84                              BufferedReaderのリーダー= 新しい新しい BufferedReaderの(新しい新規; InputStreamReaderの(conn.getInputStream()))
 85                              列ライン= NULL ;
 86                              // パスバックをJSONArrayはニーズが解析されることをデータの種類である
87は、                             IF(!(ライン= reader.readLine())= nullが){
 88                                  // 解析を開始
89                                  JSONArray JSONArray = 新新JSONArray(ライン)を、
 90                                  のためにINT I = 0; ++ I; I <jsonArray.length()){
 91                                      JSONObject jsonObject = jsonArray.getJSONObject(I)。
92                                      文字列州= jsonObject.getString( "州" )。
93                                      文字列が確認= jsonObject.getStringは( "確認します" );
94                                      文字列硬化= jsonObject.getString( "硬化" )。
95                                      文字列の死者= jsonObject.getString( "死にました" );
96                                      MSG = MSG + "省份:" +州+」确诊: "+確認+"治愈:;
97                                  }
 98                              }
 99                              // 将信息使用束封装、传给ハンドラ
100                              バンドルバンドル= 新しいバンドル()。
101                              bundle.putString( "結果" 、MSG)。
102                              メッセージMSG1 = 新しいメッセージ()。
103                              msg1.setData(バンドル)。
104                              handler.sendMessage(MSG1)。
105                              conn.disconnect()。
106                          } キャッチ(例外e){
 107                              e.printStackTrace();
108                          }
 109                      }
 110                  }))(始めます。
111              }
 112          })。
113      }
 114  
115 }

使用糸、ノートサーブレットパス、およびサーブレットパス情報バックを受け、するために使用するのHttpURLConnectionの必要性私が解決されるためにここにJSONデータの必要性だったので。操作を実装するハンドラを使用して、ページを変更することができるようにするために子スレッド。

最後に、PSPのテーブル:

PSP2.1

パーソナルソフトウェアプロセス段階

時間/リアルタイム

プランニング

計画

 

・見積り

•推定どのくらいこのタスク

2日/ 1日

開発

開発

 

・分析

(新しい技術を学ぶ含む)・ニーズ分析

1日/ 7-8時間

・デザインスペック

設計ドキュメントの生成

0/0

・デザインレビュー

・デザインレビュー(と彼の同僚は、設計文書を見直し)

0/0

・コーディング標準

・コードの仕様(現在の開発のための適切な規範の開発)

0/0

・設計

・具体的な設計

12時間/ 6時間

・コーディング

・具体的なコーディング

12時間/ 12時間

・コードレビュー

・コードレビュー

0/0

・テスト

・テスト(セルフテスト、コードを変更し、変更を提出)

3-6時間/ 3-6時間

報告

レポート

 

・試験報告書

・テストレポート

1時間/ 1時間

・サイズ測定

・コンピューティングのワークロード

30分/ 30分

・死後&プロセス

改善計画

・後知恵、およびプロセス改善計画を提案します

20分/ 20分

 

トータル

2日/ 1日

 

おすすめ

転載: www.cnblogs.com/20183711PYD/p/12547654.html