質問: ### 実行環境 * Tomcat 9.0.12 * Linux Mint 19 MATE * ターミナルからTomcatを起動させています。 * Eclipse上でTomcatは搭載していません。 ### ファイルの配置 アプリケーション名 └WebContent ├WEB-INF │├classes ││└TestServlet.class │├lib │└web.xml ├jsp │└index.jsp ├META-INF └index.html ※webapps以下に作成しています。 ※コンテキストファイルは作成していません。 ### デプロイメントの方法 こちらのサイトを参考にしました。 ### 発生している問題 * ~~**コンテキストパス/WebContent** でないとindex.htmlにアクセスできない。~~←必ずしもこうはならない(下記の検証より) * (/WebContentディレクトリ以下にWebリソースを配置しないと、Tomcat Webアプリケーションマネージャにおいて、作成したアプリケーションの「実行中」の欄がfalseになる。)←今回作成したアプリケーションのみこのような結果になった * 強引に、 コンテキストパス/WebContent/jsp/index.jsp でindex.jspを表示しようとすると **HTTPステータス 500 – Internal Server Error** と出る。(エラーメッセージ・スタックトレースは長いので下に記します。) * なぜかサーブレットにアクセスすると **HTTPステータス 404 – Not Found** が出てしまう。 * **追加:**(サーブレットにpackage文を追加すると、Tomcat Webアプリケーションマネージャにおいて、作成したアプリケーションの「実行中」の欄がfalseになる。)←下記の検証で作成したアプリケーションのみこのような結果になった ### index.jspで表示されるエラー HTTPステータス 500 – Internal Server Error Type Exception Report メッセージ **/WebContent/jsp/index.jsp (line: [1], column: [5]) 無効な指示子です** 説明 The server encountered an unexpected condition that prevented it from fulfilling the request. 例外 org.apache.jasper.JasperException: /WebContent/jsp/index.jsp (line: [1], column: [5]) 無効な指示子です org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42) org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:292) org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:98) org.apache.jasper.compiler.Parser.parseDirective(Parser.java:512) org.apache.jasper.compiler.Parser.parseFileDirectives(Parser.java:1797) org.apache.jasper.compiler.Parser.parse(Parser.java:141) org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244) org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:127) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:202) org.apache.jasper.compiler.Compiler.compile(Compiler.java:385) org.apache.jasper.compiler.Compiler.compile(Compiler.java:362) org.apache.jasper.compiler.Compiler.compile(Compiler.java:346) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:383) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ### index.jspのコード 上のエラーメッセージの太字で「/WebContent/jsp/index.jsp (line: [1], column: [5]) 無効な指示子です」とありますが、**修正したはずなのに表示され続けます。**(修正内容:`<%@param`→`<%@page`) 一応ではありますが、修正後のソースコードを載せさせて頂きます。 ``` <%@page contentType="text/html;charset=utf-8"%> index.jsp ``` ### web.xmlのコード 一部省略してあります。 ``` test TestServlet test /test ``` ### 検証 今まで作成していたアプリケーションと同じように、(適宜ディレクトリ名などは変更しました。)新たにWebアプリケーションを作成して検証してみました。(WebContentディレクトリにリソースを入れずに、それらをコンテキストルート直下に入れ、WebContentディレクトリは作成しませんでした。)この場合は問題なく動いていました。 さらに、サーブレットにpackage文を追加し、web.xmlも`パッケージ名.TestServlet`に変更してみたところ、Tomcat Webアプリケーションマネージャにおいて、作成したアプリケーションの「実行中」の欄がfalseになってしまいました。(今まで作成していたアプリケーションにも同じようなことをしてみましたが、「実行中」の欄の表示はtrueのままで変わりませんでした。) ### 予想 Tomcatがアプリケーションの構成などを記憶していて、それが今回のように影響を与えてしまっている?
回答: 元々どうなっていたのか分からないとどう修正したかもわからないのですが、 ``` <%@page contentType="text/html;charset=utf-8"%> ``` ↓ ``` <%@ page contentType="text/html;charset=utf-8"%> ``` かな? * pageディレクティブ