前回、Tomcat 9 を導入したので、Webプロジェクトを試していきたいと思います。
ただ、Eclipse経由のTomcatを起動するとNot Foundになるという...。
ブラウザでhttp://localhost:8080 にアクセスの結果。
⇩ 下記サイトによると問題ないらしいと仰ってましたが
・Eclipse - Tomcat起動はするが、localhost:8080で404エラー(eclipse内)(11096)|teratail
JavaでWebプロジェクト
「ファイル」>「新規(N)」>「その他(O)...」を選択します。
「Web」>「動的 Web プロジェクト」を選択します。
「プロジェクト名(M):」を適当につけて「次へ(N)>」を選択します。
デフォルトの状態で「次へ(N)>」を選択します。
デフォルトの状態で「完了(F)」を選択します。「web.xml デプロイメント記述子の生成(G)」にチェック付けないとマズイみたいです。(画像では付いてないけど)
Webプロジェクトフォルダが生成されました。
Java EEの標準ディレクトリ
そもそも、Java SEとJava EEは別のJDKをインストールしないといけないのかな、と考えていたのですが、サーブレットやJSPが使えるようになれば、それはJava EEということになるんですかね?
・JavaをSEとEEに分類するのは今では無意味になってきている? - 達人プログラマーを目指して
・JavaSE JavaEE そして、EJBの違いを、わかりやすく説明してもらえま... - Yahoo!知恵袋
で、EclipseでTomcatサーバーを使えるようにした後、Webプロジェクト(動的)を作成すると、servlet-api-jarというファイルが使えるようになっているみたいです。
・Java Servlet with Eclipse Neon and Tomcat 9 | Pega Exchange
よく分からないですが、Webプロジェクト(動的)を作成した際は、Java EEということで進みたいと思います。
・Tomcatの開発で迷ったら振り返りたい、Java EEの標準ディレクトリ構成 - Code Log
ネットでは、「ウィンドウ」>「パースペクティブ(R) 」>「パースペクティブを開く(O)」>「その他(O)...」から、
「Java EE」を選択しろ的なことを言っている人もいて、「パースペクティブ」が何なのか分からない初心者としては混乱しますね。
とりあえず、今回は「パースペクティブ」を変更して「Java EE」に切り替えて進めてますが。
Web上でHello World
いまいちフォルダ構成が分かりませんが、Hello Worldを表示させたいと思います。
Java で作る Webアプリケーション 開発 入門 - galife を参考に作成します。
今回は、
の3ファイルを作成します。見本のサイトのように「ファイル」>「新規」でそれぞれのファイルを作成していきます。
package hello.controllers; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class HelloWorldController */ @WebServlet("/HelloWorld") public class HelloWorldController extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public HelloWorldController() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Modelの生成 HelloWorldModel model = new HelloWorldModel(); model.setMessage("Hello World!"); // viewへModelデータを渡す準備 request.setAttribute("model", model); this.getServletContext() .getRequestDispatcher("/View/HelloWorldView.jsp") .forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
package hello.controllers; public class HelloWorldModel { private String message = ""; public void setMessage(String value){ this.message = value; } public String getMessage() { return this.message; } }
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>HelloWorld</title> </head> <body> <p>${model.message} </p> </body> </html>
jspファイルは、Viewフォルダを作成し、そこに移動しました。
Hello World を表示するだけでも、なかなか複雑ですね。
2021年3月31日(水)追記:↓ ここから
何か「Servlet 3.0」以降であれば、
⇧「Servletクラス」に「アノテーション」を付与していれば、「web.xml」とか無くても大丈夫らしいですね。
2021年3月31日(水)追記:↑ ここまで