LoginSignup
3
5

More than 5 years have passed since last update.

javaFxでリクエストをサーバーに送信する方法

Last updated at Posted at 2016-01-27

JavaFxからサーバーにリクエストを送信する方法です。
csvをサーバーにアップロードするサンプルコードを作成しました。

基礎知識/javaFx - Swingとの違い(fxmlを使わない場合)

・画面作成する分には基本的には似たような実装ができます。
・SwingではアクションIDを設定しアクションリスナでIDごとの振り分けを行う必要
がありますが、
 javaFxならsetOnActionメソッドで処理を記述できます。
・Swingにはダイアログを表示するUtilがあるがjavaFxにはなかったのですが、
javaFX 8u40から追加されました。
なのでSwingのアクション周りが書きやすくなったという感じでしょうか。

基礎知識/javaFx - fxmlとは

・xmlのタグ形式でGUIを作成することができます。
・javaでいちいちボタンなどの部品を作っていくより個人的には楽です。
・fxmlがViewになりXXXControlerがControlerになるのでうごきがわかりやすい。
fxmlを使うことで格段にGUIが書きやすくなります。

処理の流れ

window上に"csv選択"と表記されるボタンを設置しています。
onAction="#csvChoose"と定義しているのでこのボタンが押下されるとコントローラ
(FxmlWindowControl.java)のcsvChooseメソッドが呼ばれます。

MainWindow.fxml
<Button onAction="#csvChoose"
                  text="csv選択" prefWidth="45.0"
                  AnchorPane.topAnchor="85.0"
                  AnchorPane.leftAnchor="10.0" />

csvChooseメソッド内ではまずwindow上にファイルチューザを表示します。

FxmlWindowControl.java
       Button button = (Button) event.getTarget();
       Window window = button.getScene().getWindow();
       FileChooser fileChooser = new FileChooser();
       fileChooser.setTitle("Open Resource File");
       fileChooser.getExtensionFilters().addAll(
               new ExtensionFilter("Comma-Separated Values Files",
"*.csv"));

ユーザがファイルを選択するとファイルデータをFormDataMultiPartに格納します。

FxmlWindowControl.java
       File selectedFile;
       selectedFile = fileChooser.showOpenDialog(window);
       MultiPart multipart = new FormDataMultiPart();
       multipart.bodyPart(new FileDataBodyPart("file", selectedFile,
MediaType.APPLICATION_OCTET_STREAM_TYPE));

そしてサーバーに送信!

FxmlWindowControl.java
       Client client = ClientBuilder.newClient();
       client.register(MultiPartFeature.class);

client.target("http://localhost:8080/api/csv/upload").request().post(Entity.
entity(multipart, MediaType.MULTIPART_FORM_DATA_TYPE));

まとめ

ソースは https://github.com/seki-seki/sample-javaFxにあります。
サーバー編は次回記述します。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5