2

Javaを使用して完全なWebページを開く方法はありますか?Javaユーザーエンドアプリケーションで完全なWebページを開くのにかかる時間を確認する必要があります。次のコードを試しました。

    URL ur = new URL("http://www.google.com/");
    HttpURLConnection yc =(HttpURLConnection) ur.openConnection();
    BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
    String inputLine;
    while ((inputLine = in.readLine()) != null) 
    System.out.println(inputLine);
    in.close();

しかし、これは私にURLのソースコードを与えます...それは私には役に立たないです!

Javaアプリケーションを作成して、Webページをデスクトップにロードするのにかかる時間を記録する必要があるためです。

すべてがクライアントサイトにあります!

4

4 に答える 4

4

次に、JavaFXベースのサンプルを示します。

import java.util.Date;
import javafx.application.Application;
import javafx.beans.value.*;
import javafx.concurrent.Worker.State;
import javafx.event.*;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.layout.*;
import javafx.scene.web.WebEngine;
import javafx.stage.Stage;

/** times the loading of a page in a WebEngine */
public class PageLoadTiming extends Application {
  public static void main(String[] args) { launch(args); }
  @Override public void start(Stage stage) {
    final Label instructions = new Label(
      "Loads a web page into a JavaFX WebEngine.  " +
      "The first page loaded will take a bit longer than subsequent page loads due to WebEngine intialization.\n" +
      "Once a given url has been loaded, subsequent loads of the same url will be quick as url resources have been cached on the client."
    );
    instructions.setWrapText(true);
    instructions.setStyle("-fx-font-size: 14px");

    // configure some controls.
    final WebEngine engine   = new WebEngine();
    final TextField location = new TextField("http://docs.oracle.com/javafx/2/get_started/jfxpub-get_started.htm");
    final Button    go       = new Button("Go");
    final Date      start    = new Date();
    go.setOnAction(new EventHandler<ActionEvent>() {
      @Override public void handle(ActionEvent arg0) {
        engine.load(location.getText());
        start.setTime(new Date().getTime());
      }
    });
    go.setDefaultButton(true);
    final Label timeTaken = new Label();

    // configure help tooltips.
    go.setTooltip(new Tooltip("Start timing the load of a page at the entered location."));
    location.setTooltip(new Tooltip("Enter the location whose page loading is to be timed."));
    timeTaken.setTooltip(new Tooltip("Current loading state and time taken to load the last page."));

    // monitor the page load status and update the time taken appropriately.
    engine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() {
      @Override public void changed(ObservableValue<? extends State> state, State oldState, State newState) {
        switch (newState) {
          case SUCCEEDED: timeTaken.setText(((new Date().getTime()) - start.getTime()) + "ms"); break;
          default: timeTaken.setText(newState.toString());  
        }
      }
    });

    // layout the controls.
    HBox controls = HBoxBuilder.create().spacing(10).children(new Label("Location"), location, go, timeTaken).build();
    HBox.setHgrow(location, Priority.ALWAYS);
    timeTaken.setMinWidth(120);

    // layout the scene.
    VBox layout = new VBox(10);
    layout.setStyle("-fx-padding: 10; -fx-background-color: cornsilk; -fx-font-size: 20px;");
    layout.getChildren().addAll(controls, instructions);
    stage.setTitle("Page load timing");
    stage.getIcons().add(new Image("http://icons.iconarchive.com/icons/aha-soft/perfect-time/48/Hourglass-icon.png"));
    stage.setScene(new Scene(layout, 1000, 110));
    stage.show();

    // trigger loading the default page.
    go.fire();
  }
}
于 2012-05-04T18:51:07.003 に答える
3
  1. あなたはコブラを使うことができます
  2. プレーンスイングも使用できます
  3. JavaFXを使用して、次のようにすることもできます。

    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    import javafx.scene.web.WebView;
    
    public class MyWebView extends Application {
    
        public static void main(String[] args) {
            launch(args);
        }
    
        @Override
        public void start(final Stage primaryStage) {
            final WebView wv = new WebView();
            wv.getEngine().load("http://www.google.com");
            primaryStage.setScene(new Scene(wv));
            primaryStage.show();
        }
    }
    
于 2012-05-04T07:46:39.060 に答える
3

ええ、家は正しいです。しかし、この方法ははるかに簡単です...少し誤りがありますが、ベンチマークの目的には問題なく機能するはずです。

JEditorPane editorPane = new JEditorPane();
editorPane.setPage(new URL("http://www.google.com"));

このスニペットを使用した場合でも、スクリプトは画面に表示されますが、回避することはできますが、読み込み時間をベンチマークする必要があるため、スクリプトを気にする必要はないと思います...ただし、結果は異なる場合がありますJavaScriptの実行に時間がかからないため、ごくわずかです。

于 2012-05-04T07:53:57.017 に答える
-1

javaを使用してWebページを開くには、次のコードを試してください。

 import java.io.*;
  public class b {
 public static void main(String args[])throws IOException
 {
 String downloadURL="<url>";
    java.awt.Desktop myNewBrowserDesktop = java.awt.Desktop.getDesktop();
 try
  {
       java.net.URI myNewLocation = new java.net.URI(downloadURL);
      myNewBrowserDesktop.browse(myNewLocation);
  }
 catch(Exception e)
  {
   }
  }
  }

これにより、デフォルトのブラウザでWebページが開きます。パーツのロードにかかる時間については、こちらをご覧ください。そこにはたくさんの提案があります。

于 2012-05-04T07:57:21.147 に答える