このタスクは必要です:データが前の可視化を組み合わせ、外部ネットワークアクセスサーバの実装と、クロールデータ、及びアクセスデータの電話アプリを作るために。!!![画像を挿入問題、このブログを書くために、その効果が発揮できないため、いくつかの部分はテキストで説明するには]
アイデア分析:データの可視化とデータの二週間続くためにタスクコードをクロールする前に、問題は本番サーバとは、アプリを設定することです。私は学生の価格を借りアリクラウドサーバは、アプリが使用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日 |