[JAVA] [Eclipse / Tomcat] Servlet + JSP in Mavens Webapp-Projekt

Zuvor habe ich ein Webanwendungsprojekt mit "Tomcat-Projekt" in Memoanwendung mit Tomcat + JSP + Servlet + MySQL mit Eclipse erstellen erstellt. Ich habe es gemacht, weil es besser ist, "maven-archetype-webapp" als Archetyp im Maven-Projekt auszuwählen und das Projekt zu erstellen.

Referenz: Exportieren von Projekten und Kriegsdateien beim Erstellen von serverseitigem Java mit Eclipse

Projekt Einstellungen

Maven-Archetype-Webapp-Projekterstellung

Wählen Sie "Maven Project"

image.png

Deaktivieren Sie "Einfaches Projekt (e) erstellen" __ "Weiter".

image.png

Wählen Sie "maven-archtype-webapp" als Architype

image.png

image.png

Verzeichnisaufbau

Ausgangszustand

image.png

In der Projektkonfiguration unmittelbar nach der Erstellung fehlen "src / main / java" und "src / test / java" des Quelldateiverzeichnisses, sodass diese manuell aus dem Ordner des neuen Erstellungsmenüs oder des Explorers usw. erstellt werden. Machen.

image.png

(Dies wird aus irgendeinem Grund nicht als Fehler ausgegeben.)

Java-Versionseinstellung

Wenn Sie ein Maven-Projekt in Eclipse erstellen, wird Java 1.5 eingestellt. ..

Systembibliothek

Da "JRE-Systembibliothek" "J2SE-1.5" ist, wählen Sie "JavaSE-1.8 (java8)" aus den Eigenschaften mit der rechten Maustaste.

image.png

Projektfacette

Dann erhalte ich die Fehlermeldung "Stimmt nicht mit der Java-Projektfacettenversion überein"

image.png

Öffnen Sie die Projekteigenschaften und setzen Sie die Version unter "Projektfacette" auf 1.8.

image.png

Maven Compiler Version

Geben Sie die Compilerversion an, wenn Sie den Maven-Build getrennt von der JDK-Version in Eclipse ausführen.

image.png

Das Folgende wird direkt unter "" des Stammelements beschrieben. (Sie können es von Hand eingeben)

pom.xml


 <properties>
  <java.version>1.8</java.version>
  <maven.compiler.source>1.8</maven.compiler.source>
  <maven.compiler.target>1.8</maven.compiler.target>
 </properties>

Ohne dies führt beispielsweise Quellcode, der Sammlungen verwendet, zu einem Fehler, da die Version 1.5 des Compilers dies nicht unterstützt.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.395 s
[INFO] Finished at: 2018-12-23T16:03:11+09:00
[INFO] Final Memory: 9M/245M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project memoapp2: Compilation failure
[ERROR] /C:/Users/zaki/src/java-study/memoapp2/src/main/java/jp/example/www/MainServlet.java:[30,51]Diamantbetreiber-source 1.Wird in 5 nicht unterstützt
[ERROR](So aktivieren Sie den Diamantoperator-Bitte verwenden Sie Quelle 7 oder höher)
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

Servlet-Glas in Maven einschließen

Ich erhalte (von Anfang an) die Fehlermeldung, dass die Oberklasse "javax.servlet.http.HttpServlet" im Java-Erstellungspfad nicht gefunden wurde, da die Servlet-bezogenen Bibliotheken im Projekt nicht referenziert werden.

Mit Maven einstellen.

Die JAR-Datei von Java Servlet API wird festgelegt. Um die neueste Java Servlet API 4.0.1 vom Link ab Dezember 2018 in Ihr Projekt aufzunehmen, wechseln Sie zur Registerkarte Maven. Kopieren Sie den Inhalt des angezeigten XML in den Teil ~ </ dependencies> pom.xml

image.png

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>

Kopieren Sie diesen Inhalt und fügen Sie ihn in die pom.xml des Projekts ein

image.png

Wenn Sie nun die Datei speichern, wird die Servo-API automatisch heruntergeladen und entsprechend dem Inhalt der Datei in Ihr Projekt integriert.

Wenn der Prozess erfolgreich abgeschlossen wurde, wird der Fehler behoben, dass "HttpServlet" nicht im Erstellungspfad gefunden wird.

Anzeige von JSP

Wählen Sie zu diesem Zeitpunkt Tomcat unter "Ausführen" -> "Auf Server ausführen" im Kontextmenü des Projekts aus, stellen Sie sicher, dass die auf dem Server konfigurierten Ressourcen das Zielprojekt enthalten, und führen Sie es dann aus. Der Inhalt von index.jsp, der beim Erstellen des Projekts enthalten ist, kann im Browser angezeigt werden

image.png

image.png

image.png

Es ist jedoch nicht vorzuziehen, die JSP-Datei an einem Ort zu konfigurieren, auf den direkt über den Browser zugegriffen wird. Wechseln Sie daher zu einem beliebigen Pfad unter "src / main / webapp / WEB-INF" (z. B. "WEB-INF / jsp") und direkt Machen Sie es unzugänglich und zeigen Sie es über ein Servlet an.

Servlet erstellen und anzeigen

Von "Servlet" im neuen Menü.

image.png

image.png

Nach Eingabe des Paketnamens und des Klassennamens können Sie auch Metainformationen eingeben.

image.png

Auswählen der zu überschreibenden Methode

image.png

Der Wert der hier eingegebenen Metainformationen spiegelt sich auch in "src / main / webapp / WEB-INF / web.xml" wider

web.xml(Ursprünglicher Wert)


<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
</web-app>

web.xml(Nach Zugabe)


<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
  	<servlet-name>MainServlet</servlet-name>
  	<display-name>MainServlet</display-name>
  	<description>Hauptbildschirm</description>
  	<servlet-class>jp.example.www.MainServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>MainServlet</servlet-name>
  	<url-pattern>/MainServlet</url-pattern>
  </servlet-mapping>
</web-app>

Die Servlet-Quelle wird mit der angegebenen überschriebenen Methode erstellt.

package jp.example.www;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class MainServlet
 */
public class MainServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public MainServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("webapp-maven! Served at: ").append(request.getContextPath());
    }

    /**
     * @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);
    }

}

Selbst in dem Zustand unmittelbar nach der Erstellung wird Tomcat mit dem Inhalt des automatisch generierten Codes ausgeführt, wenn Sie Tomcat mit "Ausführen (R)" -> "Auf Server ausführen" starten (oder neu starten).

image.png

JSP vom Servlet aus aufrufen

[Für Tomcat-Projekt](https://qiita.com/zaki-lknr/items/32690b071abf202281d6#%E3%83%A1%E3%82%A4%E3%83%B3%E7%94%BB%E9% 9D% A2% E3% 81% AEui% E3% 81% A8% E5% 87% A6% E7% 90% 86% E9% 83% A8% E5% 88% 86% E3% 82% 92% E4% BD% Gleich wie 9C% E6% 88% 90% E3% 81% 99% E3% 82% 8B).

Für die JSP-Datei von "/ WEB-INF / jsp / main.jsp" wird sie angezeigt, wenn Sie Folgendes in das Servlet "doGet ()" schreiben

        String path = "/WEB-INF/jsp/main.jsp";
        RequestDispatcher dispatcher = request.getRequestDispatcher(path);
        dispatcher.forward(request, response);

Maven installieren und War-Dateien

Durch Ausführen von "Run (R)" -> "Maven install" wird eine War-Datei direkt unter dem Zielverzeichnis generiert.

image.png

Führen Sie "Maven clean" aus, um alle Build-Ergebnisse zu löschen

Erstellen einer Kriegsdatei durch Exportieren

Sie können auch eine Kriegsdatei erstellen, indem Sie im Projektmenü "Exportieren" auswählen.

image.png

In diesem Fall kann es unabhängig von Maven erstellt und auf einem beliebigen Pfad ausgegeben werden.

Recommended Posts

[Eclipse / Tomcat] Servlet + JSP in Mavens Webapp-Projekt
Über [Servlet] [JSP] [Tomcat]
Stellen Sie Maven das Tomcat-Projekt vor
Installieren Sie das Tomcat-Plug-In in Eclipse
Erstellen Sie ein Tomcat-Projekt mit Eclipse Pleiades All in One
Erstellen Sie ein Tomcat-Projekt mit Eclipse
Erstellen Sie ein Servlet-Programm in Eclipse
Slf4J + logback zum Eclipse Maven-Projekt hinzugefügt
Maven-Konfigurationsproblem mit Spring pom.xml in Eclipse
CI für Maven-Projekt in Azure-Pipelines
Führen Sie JUnit und Spock in einem Maven-Projekt aus
Wenn das Projekt nicht in Eclipse angezeigt wird
JSP auf Tomcat
MVC in Eclipse.
Erstellen Sie ein Java-Servlet und eine JSP-WAR-Datei für die Bereitstellung auf Apache Tomcat 9 mit Gradle
Der richtige Weg, um die Tomcat-Quelle in Eclipse zu sehen
So wechseln Sie Tomcat context.xml mit Eclipse WTP