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
Wählen Sie "Maven Project"
Deaktivieren Sie "Einfaches Projekt (e) erstellen" __ "Weiter".
Wählen Sie "maven-archtype-webapp" als Architype
Ausgangszustand
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.
(Dies wird aus irgendeinem Grund nicht als Fehler ausgegeben.)
Wenn Sie ein Maven-Projekt in Eclipse erstellen, wird Java 1.5 eingestellt. ..
Da "JRE-Systembibliothek" "J2SE-1.5" ist, wählen Sie "JavaSE-1.8 (java8)" aus den Eigenschaften mit der rechten Maustaste.
Dann erhalte ich die Fehlermeldung "Stimmt nicht mit der Java-Projektfacettenversion überein"
Öffnen Sie die Projekteigenschaften und setzen Sie die Version unter "Projektfacette" auf 1.8.
Geben Sie die Compilerversion an, wenn Sie den Maven-Build getrennt von der JDK-Version in Eclipse ausführen.
Das Folgende wird direkt unter "
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
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 pom.xml
<!-- 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
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.
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
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.
Von "Servlet" im neuen Menü.
Nach Eingabe des Paketnamens und des Klassennamens können Sie auch Metainformationen eingeben.
Auswählen der zu überschreibenden Methode
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).
[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);
Durch Ausführen von "Run (R)" -> "Maven install" wird eine War-Datei direkt unter dem Zielverzeichnis generiert.
Führen Sie "Maven clean" aus, um alle Build-Ergebnisse zu löschen
Sie können auch eine Kriegsdatei erstellen, indem Sie im Projektmenü "Exportieren" auswählen.
In diesem Fall kann es unabhängig von Maven erstellt und auf einem beliebigen Pfad ausgegeben werden.
Recommended Posts