|
| |
 |
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 |