Java

【Java】HTTP通信でリクエストを取得する方法

はじめに

Javaを使用したHTTP通信でフロントからのリクエストを取得する方法を初心者向けにご紹介します。

今回JavaでHTTP通信でリクエストを取得するにあたって、ServletというJavaプログラムを利用します。

サーブレットとは、TomcatなどのWEBサーバー上で動くJavaプログラムで、
WEBブラウザからの要求に応えたり、送られてきたデータを処理したりする役割をしています。

今回のサンプルプログラムでは、WEBブラウザからリクエストを投げ、
簡単なHTMLのレスポンスをブラウザへ返却するというプログラムを作成していきます。

開発環境

以降、以下のバージョン、環境での解説となります。

IDE:eclipse
Javaバージョン:8
Tomcat:8

ディレクトリ構成

今回のサンプルプログラムのフォルダ構成は以下の通りです。
20190418-000121.png

プロジェクトの作成

まずは新規プロジェクトの作成から「動的Webプロジェクト」を選択し、次へ進みます。

スクリーンショット 2019-04-16 23.59.56.png

次にプロジェクト名を「SampleHttpServer」とします。
また、ターゲットランタイムが「Tomcat8」となっていることを確認してください。
問題なければ完了ボタンを押してください。

スクリーンショット 2019-04-17 0.00.44.png

サーブレット作成

まずsrcディレクトリで右クリックし、新規>その他を選択してください。

スクリーンショット 2019-04-17 0.04.09.png

すると、以下のようなブラウザがでてきますので、「サーブレット」を選択し、次に進んでください。

スクリーンショット 2019-04-17 0.04.21.png

続いて、クラス名を「HttpServletTest」としてください。
Javaパッケージは記載してもしなくてもどちらでもよいです。
記載しなければ、デフォルトパッケージの中にサーブレットが作成されます。

クラス名記入しましたら、次へ進んでください。

スクリーンショット 2019-04-17 0.07.51.png

スーパークラスのコンストラクターや継承された抽象メソッドのチェックをはずしてください。
※チェックしたままでもいいのですが、今回使用しないサンプルコードが記載されていたりするので、今回はチェックを外します。

スクリーンショット 2019-04-17 0.10.38.png

完了を押してサーブレットクラスの作成完了です。

サンプルPGM

今回は、http://localhost:8080/SampleHttpServer/HttpServletTestというURLをブラウザで実行すると「Sucess!」とブラウザに返却される簡単なPGMを作成していきます。

まず、アノテーション部分を以下のように書き換えます。

nameはサーブレットの名前を指していて記載しなくても動くのですが、慣習的に記載することが多いです。
urlPatternsはこのサーブレットにアクセスするためのURL(相対パス)です。

private static final long serialVersionUID = 1Lというのはデータの読み書きを行う際のおまじないのようなものという程度の理解でOKです。

次に、ブラウザからリクエストを受領し、HTMLのレスポンスを返却するソースコードを記載します。

まず、doget()メソッドですが、GETリクエストするときは毎回上記のような記載方法となります。

レスポンスを返却する場合は、setContentTypeでどのような形態でレスポンスを返却するかを指定しています。
今回はHTMLでレスポンスを返却するので、”text/html”と指定しています。

そして、response.getWriter()メソッドでクライアントに対して文字を出力するための「PrintWriter」クラスのオブジェクトを取得し、HTMLテキストを出力していきます。

また、サーバ側で受領したことをチェックするために、Sytem.out.printlnでリクエストの受領とレスポンスの返却がわかるようにしてます。

サンプルPGM実行

プロジェクトを右クリックし、サーバーで実行を押下します。

スクリーンショット 2019-04-17 0.17.54.png

スクリーンショット 2019-04-17 0.18.14.png

サーバーが起動したら、以下のURLをブラウザで実行し、下記のように「Success!」と表示されたらOKです。
また、コンソールに「リクエスト受領・レスポンス返却」というログが出力されていることを確認してください。

http://localhost:8080/SampleHttpServer/HttpServletTest

スクリーンショット 2019-04-17 0.19.29.png