###前提・実現したいこと(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
<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/ツール等のバージョンなど)
より詳細な情報
あなたの回答
tips
プレビュー