質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.35%

linuxで動的アプリケーション(サーブレット、jsp)が動くようにしたい

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 417

richard97

score 4

前提・実現したいこと(eclipseではなくCUIで実現したいです)

OS:Mac
サーブレットやjspファイルを含んだwebアプリケーションを作りたくて、そのための設定をしています。
現状でやったことは、ホームディレクトリにservlet-sampleというディレクトリを作り、その中に、コンテキストルートのディレクトリであるhelloworldを作りました。treeコマンドするとこうなります。

Mac-mini:~ bluelawson$ tree servlet-sample
servlet-sample
└── helloworld
___    ├── WEB-INF
___    │**  ├── classes
___    │**  │**  └── HelloWorld.class
___    │**  └── web.xml
___    ├── img
___    │**  └── hello.png
___    └── index.html
4 directories, 4 files

それで、tomcatをインストールして、tomcatをインストールしたフォルダ内のstart.shを実行して、http://localhost:8080/root/index.htmlにアクセスしたところ、index.htmlを表示することができ、Helloworldクラスも動きました。

発生している問題・エラーメッセージ

ですが、これを実現する際に、/usr/local/apache-tomcat-9.0.0.M21/conf/Catalina/localhost/ の中にroot.xmlというファイルを作り、そこに、

<Context path="/root"
docBase="/Users/bluelawson/servlet-sample/helloworld"/>

と書き込む必要がありました。
これを書くことで、tomcatがhelloworldをコンテキストルートのディレクトリとして認識し、helloworld内のファイルを呼び出すことができるのですが、<context>タグは一つしか書けないため、helloworld以外のコンテキストルートのディレクトリを新しく作って実行しようと思ったら、またわざわざ/usr/local/apache-tomcat-9.0.0.M21/conf/Catalina/localhost/ まで行ってxmlファイルを書き換えなければなりません。xmlファイルを書き換えなくても複数のプロジェクトを動かせるようにできないでしょうか。

該当のソースコード

web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/helloworld</url-pattern>
</servlet-mapping>

</web-app>

index.html
<html>
<meta charset="utf-8">
<head><title>HelloWorld</title></head>
<body>

<br>
<img src="./img/hello.png">
<a href="/root/helloworld">クリックして下さい</a>
<br>

</body>
</html>

HelloWorld.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{

response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}

試したこと

課題に対してアプローチしたことを記載してください

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る