[JAVA] Jusqu'à ce que vous exécutiez l'exemple de code Apache Velocity

Jusqu'à ce que vous exécutiez l'exemple de code Apache Velocity

Je vais l'écrire comme mémo pour moi-même. Je l'ai fait parce que je voulais un environnement pour vérifier le comportement de Velocity en lisant le site officiel.

Les choses nécessaires

--Tomcat 9 (conteneur de serviteur) --Eclipse (environnement de développement intégré)

Code source complet

Il s'agit d'un référentiel Git avec un ensemble de code source créé par la procédure suivante. https://github.com/vicboss1002/velocity_sample

procédure

  1. Installez Tomcat
  2. Définissez Tomcat comme serveur dans Eclipse
  3. Créez un projet Maevn dans Eclipse
  4. Téléchargez des bibliothèques dépendantes avec Maven
  5. Affichez le fichier de modèle de vitesse dans le navigateur
  6. Passer des variables du contexte Java au contexte Velocity pour affichage

Installez Tomcat

J'ai téléchargé et installé ** Windows Service Installer 32 bits / 64 bits ** à partir du site suivant. https://tomcat.apache.org/download-90.cgi image.png

Configurer Tomcat en tant que serveur dans Eclipse

  1. Ouvrez ** Fenêtre> Préférences> Serveur> Environnement d'exécution ** image.png image.png

Créer un projet Maven dans Eclipse

  1. Sélectionnez ** Fichier> Nouveau> Projet Maven ** image.png
  2. Sélectionnez maven-archetype-webapp dans ** Sélectionnez un archétype ** image.png
  3. Spécifiez ** GroupId **, ** ArtifactId ** pour créer un projet Maven image.png image.png

Télécharger des bibliothèques dépendantes avec Maven

  1. Dans ** pom.xml **, spécifiez les éléments suivants pour la bibliothèque dépendante

pom.xml


<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>4.0.0</version>
</dependency>
<dependency>
	<groupId>org.apache.velocity.tools</groupId>
	<artifactId>velocity-tools-generic</artifactId>
	<version>3.0</version>
</dependency>
<dependency>
	<groupId>org.apache.velocity.tools</groupId>
	<artifactId>velocity-tools-view</artifactId>
	<version>3.0</version>
</dependency>
<dependency>
	<groupId>org.apache.velocity.tools</groupId>
	<artifactId>velocity-tools-view-jsp</artifactId>
	<version>3.0</version>
</dependency>
<dependency>
	<groupId>com.republicate</groupId>
	<artifactId>webapp-slf4j-logger</artifactId>
	<version>1.3</version>
</dependency>
  1. Exécutez ** Project> Exécuter en tant que> Maven build ** image.png image.png

Afficher le fichier de modèle de vitesse dans le navigateur

  1. Ajoutez les paramètres ** VelocityViewServlet ** à web.xml Ajoutez les paramètres ** VelocityViewServlet ** à web.xml en fonction de la description dans here.

web.xml


<!--Paramètres de sortie du journal-->
<context-param>
	<param-name>webapp-slf4j-logger.level</param-name>
	<param-value>debug</param-value>
</context-param>
<context-param>
	<param-name>webapp-slf4j-logger.format</param-name>
	<param-value>%logger [%level] [%ip] %message</param-value>
</context-param>
<servlet>
	<servlet-name>velocity</servlet-name>
	<servlet-class>
		org.apache.velocity.tools.view.VelocityViewServlet
	</servlet-class>

	<!-- Unless you plan to put your tools.xml and velocity.properties under 
		different folders or give them different names, then these two init-params 
		are unnecessary. The VelocityViewServlet will automatically look for these 
		files in the following locations. -->
	<init-param> 
		<param-name>org.apache.velocity.toolbox</param-name> 
		<param-value>/WEB-INF/tools.xml</param-value> 
	</init-param> 
	<init-param> 
		<param-name>org.apache.velocity.properties</param-name> 
		<param-value>/WEB-INF/velocity.properties</param-value> 
	</init-param>
</servlet>

<!-- Map *.vm files to Velocity -->
<servlet-mapping>
	<servlet-name>velocity</servlet-name>
	<url-pattern>*.vm</url-pattern>
</servlet-mapping>
  1. Créez un fichier modèle directement sous ** racine du projet> src ** image.png

sample.vm


#set($text = "Velocity World!")
Hello $text
  1. Lancez Tomcat à partir de la vue ** Serveurs ** d'Eclipse image.png

  2. Affichez et confirmez ** sample.vm ** via le navigateur Entrez http: // localhost: 8080 / velocity_sample / sample.vm dans l'URL du navigateur pour l'afficher. image.png

C'est tout. Il a été confirmé que le processus Velocity décrit dans ** sample.vm ** avait été exécuté et que le contenu était affiché.

Passer des variables du contexte Java au contexte Velocity pour l'affichage

  1. Créez une sous-classe de VelictyViewServlet.

MyVelocityViewServlet.java


public class MyVelocityViewServlet extends VelocityViewServlet {
	private static final long serialVersionUID = 1L;
    protected Template handleRequest(HttpServletRequest request,
            HttpServletResponse response,
            Context ctx)
	{

    	ctx.put("boolTrue", true);
    	ctx.put("boolFalse", false);
    	ctx.put("number", 1234);
    	ctx.put("string", "abcd");
    	ctx.put("list", Arrays.asList("a", "b", "c", "d"));
    	
    	Map<String, String> map = new HashMap<>();
    	map.put("key1", "value1");
    	map.put("key2", "value2");
    	ctx.put("map", map);
    	return super.handleRequest(request, response, ctx);
	}
}
  1. Réécrivez web.xml pour la sous-classe VelictyViewServlet comme suit:

web.xml


<servlet>
	<servlet-name>velocity</servlet-name>
<!-- 		<servlet-class> -->
<!-- 			org.apache.velocity.tools.view.VelocityViewServlet -->
<!-- 		</servlet-class> -->
	<servlet-class>velocity_sample.MyVelocityViewServlet</servlet-class>

	<!-- Unless you plan to put your tools.xml and velocity.properties under 
		different folders or give them different names, then these two init-params 
		are unnecessary. The VelocityViewServlet will automatically look for these 
		files in the following locations. -->
	<init-param>
		<param-name>org.apache.velocity.toolbox</param-name>
		<param-value>/WEB-INF/tools.xml</param-value>
	</init-param>
	<init-param>
		<param-name>org.apache.velocity.properties</param-name>
		<param-value>/WEB-INF/velocity.properties</param-value>
	</init-param>
</servlet>
  1. Créez un fichier modèle qui appelle l'ensemble de variables à partir de Java

sample_of_context.vm


\${boolTrue}: ${boolTrue}<br/>
\${boolFalse}: ${boolFalse}<br/>
\${number}: ${number}<br/>
\${string}: ${string}<br/>
\${list}: ${list}<br/>
\${map}: ${map}<br/>

La sortie est la suivante. image.png

Recommended Posts

Jusqu'à ce que vous exécutiez l'exemple de code Apache Velocity
Jusqu'à ce que vous exécutiez apache avec ubuntu sur docker
Exemple de code Apache beam
Jusqu'à ce que le code soit exécuté
Jusqu'à ce que vous exécutiez Hello World of JavaFX avec VSCode + Gradle
Jusqu'à ce que vous exécutiez un programme Java avec le SDK AWS local sur Windows
Utilisez des modèles sur le chemin de classe avec Apache Velocity
Jusqu'à ce que vous exécutiez mruby dans votre navigateur (WebAssembly)
Exemple de code Java 02
Exemple de code Java 03
Exemple de code Java 04
Exemple de code Java 01
Jusqu'à ce que j'essaye d'exécuter Apache Kafka avec une image docker
Jusqu'à ce que l'exemple de l'Assistant Google s'exécute sur Android Things