Auparavant, j'ai créé un projet d'application Web avec "Projet Tomcat" dans Créer une application de mémo avec Tomcat + JSP + Servlet + MySQL en utilisant Eclipse. Je l'ai fait parce qu'il est préférable de sélectionner maven-archetype-webapp
comme archétype dans le projet Maven et de créer le projet.
Référence: Exportation de projets et de fichiers war lors de la création de Java côté serveur avec Eclipse
Sélectionnez "Projet Maven"
Décochez "Créer un projet simple (S)" __ "Suivant"
Sélectionnez "maven-archtype-webapp" comme architype
Etat initial
Dans la configuration du projet immédiatement après la création, src / main / java
et src / test / java
du répertoire du fichier source sont manquants, il est donc créé manuellement à partir du dossier du nouveau menu de création ou de l'Explorateur, etc. Faire.
(Ce n'est pas affiché comme une erreur pour une raison quelconque)
Si vous créez un projet Maven dans Eclipse, ce sera le paramètre Java 1.5. ..
Puisque "JRE System Library" est "J2SE-1.5", sélectionnez "JavaSE-1.8 (java8)" dans les propriétés du clic droit.
Ensuite, j'obtiens l'erreur "Ne correspond pas à la version des facettes du projet Java"
Ouvrez les propriétés du projet et définissez la version sur 1.8 à partir de "Project Facet"
Spécifiez la version du compilateur lors de l'exécution de maven build séparément de la version JDK dans Eclipse.
Ce qui suit est décrit directement sous `
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>
Sans cela, par exemple, le code source utilisant des collections entraînera une erreur car la version 1.5 du compilateur ne le prend pas en charge.
[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]Opérateur diamant-source 1.Non pris en charge dans 5
[ERROR](Pour activer l'opérateur diamant-Veuillez utiliser la source 7 ou ultérieure)
[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
J'obtiens l'erreur (depuis le début) que la superclasse "javax.servlet.http.HttpServlet" n'a pas été trouvée dans le chemin de construction Java, car les bibliothèques liées aux servlets ne sont pas référencées dans le projet.
Réglez à l'aide de Maven.
Le fichier jar de l 'API Java Servlet est défini.
Pour incorporer la dernière API Java Servlet 4.0.1 à partir de décembre 2018 à partir du lien, l'onglet Maven Copiez le contenu du XML affiché dans la partie <dependencies> ~ </ dependencies>
de 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>
Copiez et collez ce contenu dans le fichier pom.xml
du projet
Désormais, lorsque vous enregistrez le fichier, la servo-api sera automatiquement téléchargée et intégrée à votre projet en fonction du contenu du fichier.
Si le processus se termine avec succès, l'erreur indiquant que HttpServlet
n'est pas trouvée dans le chemin de construction sera résolue.
À ce stade, sélectionnez Tomcat dans «Exécuter» -> «Exécuter sur le serveur» dans le menu contextuel du projet, assurez-vous que les ressources configurées sur le serveur incluent le projet cible, puis exécutez-le. Le contenu de ʻindex.jsp` inclus lors de la création du projet peut être affiché sur le navigateur.
Cependant, il n'est pas préférable de configurer le fichier jsp dans un emplacement accessible directement depuis le navigateur, alors déplacez-vous vers n'importe quel chemin sous src / main / webapp / WEB-INF
(tel que WEB-INF / jsp
) et directement Rendez-le inaccessible et affichez-le via un servlet.
Depuis "Servlet" dans le nouveau menu.
Après avoir entré le nom du package et le nom de la classe, vous pouvez également entrer des méta-informations.
Choisir la méthode à remplacer
La valeur des méta-informations saisies ici est également reflétée dans src / main / webapp / WEB-INF / web.xml
web.xml(valeur initiale)
<!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(Après l'addition)
<!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>Écran principal</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>
La source du servlet est créée avec la méthode spécifiée remplacée.
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);
}
}
Même dans l'état immédiatement après la création, si vous démarrez (ou redémarrez) Tomcat avec "Run (R)" -> "Run on server", il sera exécuté avec le contenu du code généré automatiquement.
[Pour le projet Tomcat](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% Identique à 9C% E6% 88% 90% E3% 81% 99% E3% 82% 8B).
Pour le fichier jsp de / WEB-INF / jsp / main.jsp
, il sera affiché si vous écrivez ce qui suit avec doGet ()
du servlet.
String path = "/WEB-INF/jsp/main.jsp";
RequestDispatcher dispatcher = request.getRequestDispatcher(path);
dispatcher.forward(request, response);
En exécutant "Run (R)" -> "Maven install", un fichier war est généré directement sous le répertoire target
.
Exécutez "Maven clean" pour effacer tous les résultats de compilation
Vous pouvez également créer un fichier war en sélectionnant "Exporter" dans le menu projet.
Dans ce cas, il peut être créé indépendamment de Maven et peut être généré vers n'importe quel chemin.
Recommended Posts