FrontPage

Webアプリ開発環境構築(Eclipse&Tomcat)とWARサンプルデプロイ 2018年5月20日

一連の流れをメモした

  1. JDKとJREのインストール
    ダウンロードページ: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
    1. インストールしたX:\XXXX\[jdkルート]\binにpathを通す
    2. 新規システム環境変数、JAVA_HOMEを作成し、インストールしたX:\XXXX\[jdkルート]\binを設定する
    3. 新規システム環境変数、JRE_HOMEを作成し、インストールしたX:\XXXX\[jreルート]を設定する

  2. Eclipseのインストール
    ダウンロードページ: http://mergedoc.osdn.jp/
  3. Tomcatのインストール
    ダウンロードページ: http://tomcat.apache.org/download-80.cgi
    1. ポート番号を変えたい場合はX:\XXXX\[tomcatルート]\conf\server.xmlを編集する

  4. サンプルWARのダウンロード
    1. benefits.war: http://www.oracle.com/webfolder/technetwork/jp/obe/fusion_middleware/wls103/appdeploy/deploy/deploy_apps/deploy_apps.htm

  5. Eclipseを起動し、サンプルWARをインポートする
    1. File→Import→Web→WAR File
    2. そのままだとjavax.servlet.*がみつからないと怒られるので、プロジェクトを右クリック、Properties→Java Build Path→ライブラリー→モジュールパス→Add External JARs...→「tomcatルート」\lib配下のservlet-api.jarを追加
    3. "BenefitsServlet?.java"なんかを適当に編集する。

  6. デプロイ~テスト
    1. プロジェクト右クリック→Export→WAR FileでWARファイル作成
    2. Alt+Shift+D→Rでサーバをデバッグ起動
    3. http://127.0.0.1:8080/benefitsへアクセスして動作確認できる。

サンプルコード1

例として、http://bj006.comからHTTP GETした結果をそのまま表示するservletの動作確認用javaを以下に示す

BenefitsServlet?.java

package com.dizzyworld;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
//import java.util.Enumeration;
import java.net.*;

public class BenefitsServlet extends HttpServlet {

    public void service(HttpServletRequest request, HttpServletResponse response) 
    throws IOException, ServletException {
//        ServletOutputStream out = response.getOutputStream();
//
//        String[] benefitNames = request.getParameterValues("benefit");
//
//        response.setContentType("text/html");
//        for (String benefit : benefitNames) {
//            if (benefit.equals("vacation")) {
//                RequestDispatcher rd = request.getRequestDispatcher("company.jsp");
//                rd.include(request, response);
//                continue;
//            }
//            if (benefit.equals("health")) {
//                RequestDispatcher rd = request.getRequestDispatcher("health.jsp");
//                rd.include(request, response);
//                continue;
//            }
//            if (benefit.equals("vision")) {
//                RequestDispatcher rd = request.getRequestDispatcher("vision.jsp");
//                rd.include(request, response);
//                continue;
//            }
//            if (benefit.equals("dental")) {
//                RequestDispatcher rd = request.getRequestDispatcher("dental.jsp");
//                rd.include(request, response);
//                continue;
//            }
//        }
//
//        out.print("<BR><A HREF='./welcome.html'>Back To Home Page</A><BR>");

        PrintWriter out = response.getWriter();
        URL url = new URL("http://bj006.com");
        HttpURLConnection con = (HttpURLConnection)url.openConnection();
        con.setRequestMethod("GET");
        con.connect();
        response.setContentType("text/html;charset=Shift_JIS");
        BufferedReader reader =
                new BufferedReader(new InputStreamReader
                    (con.getInputStream(), "JISAutoDetect"));
            String buffer = reader.readLine();
            System.out.println("accessed");
            while (null != buffer) {
                out.println(buffer);
                buffer = reader.readLine();
            }
    }
}

サンプルコード2

GetInformation?ボタンを押せばservletに処理が渡る。
getWriterを使うように修正して、例外"getOutputStream?()はこのレスポンスに対して既に呼び出されています"に対応する。

BenefitsServlet?.java

package com.dizzyworld;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class BenefitsServlet extends HttpServlet {

    public void service(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException {
        response.setContentType("text/html");
//        ServletOutputStream out = response.getOutputStream();
        PrintWriter out = response.getWriter();


        String[] benefitNames = request.getParameterValues("benefit");

        for (String benefit : benefitNames) {
            if (benefit.equals("vacation")) {
                RequestDispatcher rd = request.getRequestDispatcher("company.jsp");
                rd.include(request, response);
                continue;
            }
            if (benefit.equals("health")) {
                RequestDispatcher rd = request.getRequestDispatcher("health.jsp");
                rd.include(request, response);
                continue;
            }
            if (benefit.equals("vision")) {
                RequestDispatcher rd = request.getRequestDispatcher("vision.jsp");
                rd.include(request, response);
                continue;
            }
            if (benefit.equals("dental")) {
                RequestDispatcher rd = request.getRequestDispatcher("dental.jsp");
                rd.include(request, response);
                continue;
            }
        }

        out.print("<BR><A HREF='./welcome.html'>Back To Home Page</A><BR>");

    }
}

参考ページ

http://blogs.yahoo.co.jp/dk521123/34220519.html
http://techfun.cc/java/windows-eclipse-install.html


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-05-20 (日) 23:34:57 (148d)