今後、私がサーバーサイド Java を触ることはないだろうけども、
万が一あった際のためにメモ。
IntelliJ IDEA で Tomcat を使って、 JSP の開発したい時、行っておく設定のメモ。
前提条件は、
- IntelliJ IDEA 2016.1.3
- Java 8
- Tomcat 8.x
- プロジェクトは既存のものをインポート
ディレクトリ構成は、 IDEA デフォルトのものとは違うと思うけど、こんな感じ。
ROOT |-users | |- *.jsp | |-META-INF | |-WEB-INF | |-classes | | |-com.kokoiroworks | | | |- *.java | |- *.jsp
で、これをそのまま使おうとすると、補完機能が HTML 以外では動作しません。困った。
ということで、設定を変えて、補完が効くようにしていきます。
Beans の補完
Java Beans を作成して、下のようにインポートして使った際、そんなメソッドないよと赤文字で表示されます。
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <jsp:useBean id="user" class="com.kokoiroworks.User" scope="session" /> <html> <body> <p> ようこそ、 <%= user.getName() %> さん! </p> </body> </html>
これを解決するには、 *.java
のあるディレクトリをソースディレクトリとして設定します。
File
-> Project Structure
と進み、 Modules
の Sources
タブを開きます。
次に、ディレクトリ WEB-INF
を展開し、 classes
ディレクトリを選択します。
最後に、上にある Mark as の部分で、 Sources
を選択すれば、完了です。
これで、補完も効くし、エラー表示も消えます。
また、 Paths
タブに移動し、 Compiler output のパスを、変更しておく必要もあります。
暗黙オブジェクトの補完
request
だとか、そういった Tomcat の暗黙オブジェクトの補完も、うまく効いてくれません。
ということで、こちらも設定で。
上と同様、 File
-> Project Structure
と進み、 Module
の Dependencies
タブを開きます。
次に、左側プラスボタンから JARs or directories...
を選択。
Tomcat ルートディレクトリへ移動し、 libs
から、以下の2つを追加します。
jsp-api.jar
servlet-api.jar
これで、上と同様、補完が効くようになります。
2016/07/04 追記
上記ディレクトリ構造自体は、あまり良いものではないらしいので、
調べた限りでは、 Gradle 等ビルドツールを使って、以下の様な感じになるのが多そうです。
ROOT |-src | |-main | | |-java | | | |-com.example | | | | |- *.java | | | | | |-webapp | | | |-classes | | | |-lib | | | |-web.xml | | | | | |-resources | | | |-test