JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > HTTP編  
メニュー
Home
情報交換掲示板
ツールの部屋
Java関連の書籍
アプリケーション編
Swing編
Swing(イベント)編
Swing(Look&Feel)編
アプレット編
iアプリ編
サーブレット編
サーブレット(Linux)編
サーブレット(web.xml)編
サーブレット(セッション)編
サーブレット(クッキー)編
サーブレット(フィルタ)編
JSP編
JSP(ディレクティブ)編
JSP(アクション)編
JSP(スクリプト)編
JSP(オブジェクト)編
JSP(カスタムタグ)編
JSP(データベース)編
Apache + Tomcat編
Struts編
JDBC編
JDBC(データソース)編
JDBC(MySQL)編
JDBC(PostgreSQL)編
JDBC(トランザクション)編
JavaMail(SMTP)編
JavaMail(POP)編
JNI編
RMI編
RMI(アプレット)編
CORBA編
JNDI編
EJB編
EJB(Entity Bean)編
JMS(PTP)編
JMS(Pub/Sub)編
XML(SAX)編
XML(DOM)編
XSLT編
SOAP編
国際化編
国際化(タイムゾーン)編
国際化(通貨)編
リフレクション編
コレクション編
コレクション(Set)編
コレクション(List)編
コレクション(Map)編
スレッド編
正規表現編
アサーション編
ログ機能編
サウンド編
ファイル入出力編
URL編
ソケット編
データグラム編
HTTP
FTP編
jar編
javadoc編
Ant編
外部コマンド編
プロパティファイル編
システムプロパティ編
Eclipse編
  2002/02/03  田中宏和
HTTP編
◆HTTPとは?
HTTPとはHyper Text Transfer Protocolの略です。WEBサーバーとブラウザ端末がデータをやり取りする際に使用されるプロトコルです。インターネットでホームページを見るときに使用されています。
◆HTTPのメソッドとは?
HTTPはWEBサーバーにリクエストを送信する際にメソッドを使用します。メソッドとはサーバーに対する命令みたいなもので、よく使われるのはGETとPOSTです。
メソッド 説明
GET URLで指定したリソースを取得します
POST 指定したURLにデータを転送します
◆ここでの環境
OS Windows 2000
J2SE SDK 1.4.0
◆HTTP GETメソッドを使用してリソースの取得
ブラウザでアドレスを指定すれば取得できます。Javaで取得するにはURL編を参考にしてください。
◆HTTP POSTメソッドを使用してデータの送信
POSTメソッドを使用してデータを送信するわけですが、インターネット上ではどんな場面で使用されているのでしょうか。よく見かけるログインのページなど、フォームにユーザーがデータを入力するページで使用されています。それではさっそく入力フォームから作ってみることにしましょう。
◆入力フォームの作成(POST)
ここではmsgという名前のテキストボックスに何か入力して、それをサーバーに送るフォームを作ります。
inputpost.htm(ここをクリックして表示)
<html>
<head>
<title>POST送信テスト</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>
<form name="form1"
method="post"
action="http://localhost:8080/examples/servlet/HttpTestServlet">
メッセージ:
<input type="text" name="msg">
<input type="submit" name="submit" value="送信">
</form>

</body>
</html>
 
◆送信されたデータを処理するサーブレットの作成(POST)
送られてきたデータを処理するサーブレットを作成しなければなりません。送られてきたデータをそのまま表示するサーブレットを作りたいと思います。POSTのリクエストはサーブレットのdoPostメソッドで処理されます。
HttpTestServlet.java(ここからダウンロード)
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class HttpTestServlet extends HttpServlet {
  /**
   * Post リクエスト処理
   */
  public void doPost(HttpServletRequest request,
                     HttpServletResponse response)
    throws ServletException, IOException {

    // パラメーターを取得します
    String msg = request.getParameter("msg");

    // 取得したメッセージをそのまま出力します
    response.setContentType("text/html; charset=Shift_JIS");
    PrintWriter out = response.getWriter();
    out.println("送信されたメッセージは " + msg + " です");
  }
} 
 
サーブレット編を参考にして上のファイルをコンパイルして[Tomcatのフォルダ]\webapps\examples\WEB-INF\classesの下にクラスファイルをコピーしてTomcatを再起動してください。
http://www.hellohiro.com/src/inputpost.htm
上記の入力フォームからメッセージを入力して送信してみましょう!
おおおお!送信したメッセージが表示されましたね!
 
◆JavaのプログラムからPOST送信
JavaのプログラムからPOSTで送信するにはURL編のソースに手を加えなければなりません。以下がそのソースになります。赤字のところがPOSTで送信するために追加した行です。
◆Javaソース
HelloWorldPost.java(ここからダウンロード)
import java.net.*;
import java.io.*;

public class HelloWorldPost {
  public static void main(String[] args) {
    try {
      // URLクラスのインスタンスを生成
      URL helloURL = 
            new URL("http://localhost:8080/examples/servlet/HttpTestServlet");
      
      // 接続します
      URLConnection con = helloURL.openConnection();
      // 出力を行うように設定します
      con.setDoOutput(true);

      // 出力ストリームを取得
      PrintWriter out = new PrintWriter(con.getOutputStream());
      out.print("msg=Hello+World");
      out.close();
      
      // 入力ストリームを取得
      BufferedReader in = new BufferedReader(
                                new InputStreamReader(
                                con.getInputStream()));

      // 一行ずつ読み込みます
      String line;
      while ((line = in.readLine()) != null) {
        // 表示します
        System.out.println(line);
      }
    
      // 入力ストリームを閉じます
      in.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
} 
 
◆コンパイルと実行
コマンドプロンプト
C:\作業フォルダ\JavaHello>javac HelloWorldPost.java

C:\作業フォルダ\JavaHello>java HelloWorldPost
送信されたメッセージは Hello World です

C:\作業フォルダ\JavaHello>

おおおお!表示されましたね!
 
◆HTTP GETメソッドを使用してデータの送信
GETメソッドを用いてもデータを送信することができます。送信する方法はURLの最後に?をつけて、その後に「パラメーターの名前=値」を指定します。複数のパラメーターがある場合は&でつなげます。
例)
http://localhost:8001/examples/servlet/HttpTestServlet?msg1=Hello+World&msg2=Java&・・・・・
◆入力フォームの作成(GET)
inputget.htm(ここをクリックして表示)
<html>
<head>
<title>POST送信テスト</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>
<form name="form1"
method="get"
action="http://localhost:8080/examples/servlet/HttpTestServlet">
メッセージ:
<input type="text" name="msg">
<input type="submit" name="submit" value="送信">
</form>

</body>
</html>
 
◆送信されたデータを処理するサーブレットの作成(GET)
上記のHttpTestServlet.javaファイルにGETのリクエストを処理するメソッドdoGetを追加します。
HttpTestServlet.java(ここからダウンロード)
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class HttpTestServlet extends HttpServlet {
  /**
   * Post リクエスト処理
   */
  public void doPost(HttpServletRequest request,
                     HttpServletResponse response)
    throws ServletException, IOException {

    // パラメーターを取得します
    String msg = request.getParameter("msg");

    // 取得したメッセージをそのまま出力します
    response.setContentType("text/html; charset=Shift_JIS");
    PrintWriter out = response.getWriter();
    out.println("送信されたメッセージは " + msg + " です");
  }
  /**
   * Get リクエスト処理
   */
  public void doGet(HttpServletRequest request,
                     HttpServletResponse response)
    throws ServletException, IOException {

    // パラメーターを取得します
    String msg = request.getParameter("msg");

    // 取得したメッセージをそのまま出力します
    response.setContentType("text/html; charset=Shift_JIS");
    PrintWriter out = response.getWriter();
    out.println("送信されたメッセージは " + msg + " です");
  }
} 
 
POSTの時と同じようにコンパイルして[Tomcatのフォルダ]\webapps\examples\WEB-INF\classesの下にクラスファイルをコピーしてTomcatを再起動してください。
http://www.hellohiro.com/src/inputget.htm
上記の入力フォームからメッセージを入力して送信してみましょう!
おおおお!メッセージが表示されましたね!ここで重要なのはブラウザのアドレスに表示されているURLです。多分以下のように表示されていると思います。
http://localhost:8080/examples/servlet/HttpTestServlet?msg=Hello+World&submit=%91%97%90M
 
GETメソッドでデータを送信する場合は入力フォームを作らなくても上記のようなURLを指定するだけでデータをサーバーに送ることができます。
◆JavaのプログラムからGET送信
JavaのプログラムからGETで送信するのは簡単です。URL編のURLの指定を
http://localhost:8080/examples/servlet/HttpTestServlet?msg=Hello+World
に変更すればできます。簡単ですね!
◆Javaソース
HelloWorldGet.java(ここからダウンロード)
import java.net.*;
import java.io.*;

public class HelloWorldGet {
  public static void main(String[] args) {
    try {
      // URLクラスのインスタンスを生成
      URL helloURL = 
         new URL("http://localhost:8080/examples/servlet/HttpTestServlet?msg=Hello+World");
      // 入力ストリームを生成
      BufferedReader in = new BufferedReader(
                                new InputStreamReader(
                                helloURL.openStream()));

      // 一行ずつ読み込みます
      String line;
      while ((line = in.readLine()) != null) {
        // 表示します
        System.out.println(line);
      }
    
      // 入力ストリームを閉じます
      in.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
} 
 
(メモ)
helloURL.openStream()は
helloURL.openConnection().getInputStream()の短縮形です。
◆コンパイルと実行
コマンドプロンプト
C:\作業フォルダ\JavaHello>javac HelloWorldGet.java

C:\作業フォルダ\JavaHello>java HelloWorldGet
送信されたメッセージは Hello World です

C:\作業フォルダ\JavaHello>

おおおお!表示されましたね!
 
■書籍
Java関連の書籍

 
  ネットで買えば断然お得!お買い物なら楽天市場
ツールの部屋 - Java関連の書籍 - デザインパターン - 情報交換掲示板 - HOME