LoginSignup
0
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-04-17

はじめに

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

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

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

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

1. 開発環境

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

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

2. ディレクトリ構成

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

3. プロジェクトの作成

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

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

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

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

4. サーブレット作成

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

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

5. サンプルPGM

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

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

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

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

java
@WebServlet(name = "HttpServletTest", urlPatterns = { "/HttpServletTest" })
public class HttpServletTest extends HttpServlet {
    private static final long serialVersionUID = 1L;
}

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

java
@WebServlet(name = "HttpServletTest", urlPatterns = { "/HttpServletTest" })
public class HttpServletTest extends HttpServlet {
    private static final long serialVersionUID = 1L;

        // 今回追加する部分
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("リクエスト受領");
        //HTTPレスポンスヘッダのコンテンツタイプ
        response.setContentType("text/html");

        //HTTPボディ部
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE html>");
        out.println("<html>");
        out.println("<head>");
        out.println("<meta charset=\"UTF-8\">");
        out.println("<title>Test</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Success!</h1>");
        out.println("</body>");
        out.println("</html>");
        System.out.println("レスポンス返却");
    }

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

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

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

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

6. サンプルPGM実行

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

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

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

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

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

さいごに

2020年から個人ブログはじめました!

フリーランスエンジニアになって得た知識と経験をもとに、フリーランスエンジニアに関する情報をはじめ、IT技術情報や業界情報、エンジニアライフハック等のコンテンツを配信していく予定です。

まだまだ記事数は少ないのですが、週単位で更新してますので、もしご興味ございましたら、みていただけると嬉しいです。

0
1
2

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