--Erstellen Sie eine einfache Web-App --Wenn Sie vom Bildschirm aus eingeben, wird der eingegebene Inhalt zurückgegeben.
Klicken Sie mit Eclipse mit der rechten Maustaste in Projektexplorer → Neu → Projekt Maven → Maven-Projekt → Klicken Sie auf Weiter Aktivieren Sie dieses Mal die Option Einfaches Projekt erstellen und klicken Sie auf Weiter Geben Sie eine beliebige Gruppen-ID (Organisations-ID), Artefakt-ID (Identifikations-ID, die der Projektname ist) ein, überprüfen Sie, ob die Verpackung jar ist, und klicken Sie auf Fertig stellen.
Abhängig von den Eclipse-Einstellungen wird die folgende Paketkonfiguration abgeschlossen.
Geben Sie hier das Paket an, das in maven in pom.xml verwendet werden soll, und legen Sie die Anwendung in config.yml fest.
Wählen Sie die direkt unter dem Projekt erstellte Datei pom.xml aus und bearbeiten Sie sie. Es muss beschrieben werden, dass der Drop-Assistent hier verwendet wird, und dieses Mal die erforderliche Bibliothek, Hauptklasse und "Maven-Shade" unter der Annahme eines Fat-Jar zum Zeitpunkt der Erstellung angeben.
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>priv.jp.y.suzuki</groupId>
<artifactId>dropTest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<dropwizard.version>0.9.2</dropwizard.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<configuration>
<createDependencyReducedPom>true</createDependencyReducedPom>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>dropTest.priv.jp.y.suzuki.DropTestApplication</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-core</artifactId>
<version>${dropwizard.version}</version>
</dependency>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-auth</artifactId>
<version>${dropwizard.version}</version>
</dependency>
<dependency>
<groupId>io.dropwizard</groupId>
<artifactId>dropwizard-assets</artifactId>
<version>${dropwizard.version}</version>
</dependency>
</dependencies>
</project>
Beschreiben Sie die in der App verwendeten Einstellungen. Erstellen Sie dieses Mal eine yml-Datei (einen beliebigen Namen) direkt unter dem Stammverzeichnis des Projekts (am selben Speicherort wie pom.xml). Geben Sie den Port an und legen Sie den Stammpfad fest, wenn Sie die Anwendung starten. Mit den folgenden Einstellungen wird die App am 8090-Port gestartet und der Root-Pfad auf / api / festgelegt.
config.yml
# Application server setting.
server:
applicationConnectors:
- type: http
port: 8090
rootPath: '/api/*'
Wir werden die erforderlichen Dateien mit Dropwizard erstellen. Dieses Mal habe ich ein Paket namens "dropTest.priv.jp.y.suzuki" unter "src / main / java" erstellt und eine Kernklasse darunter erstellt.
Stellen Sie hier die Parameter für jede Umgebung ein. Die im vorherigen Schritt beschriebenen Informationen in der yaml-Datei werden in diese Klasse geladen. Angenommen, Sie haben die folgenden Einstellungen (beschrieben) in der yaml-Datei vorgenommen.
config.yml
~ Ausgelassen ~
# template sentence
template: Hello!!
Erstellen Sie dann eine Konfigurationsklasse wie unten gezeigt
DropTestConfiguration.java
package priv.jp.y.suzuki;
import io.dropwizard.Configuration;
public class DropTestConfiguration extends Configuration {
/**Lesen Sie aus der Einstellungsdatei*/
private String template;
public String getTemplate() {
return template;
}
}
Auf diese Weise können Sie dies in der Anwendungsklasse usw. lesen und verwenden.
Erstellen Sie eine Anwendungsklasse, die als Hauptklasse in Java positioniert ist. Hier werden die Hauptfunktion, die Bundle-Einstellungen und die Registrierung der Ressourcenklassen ausgeführt. Ich habe die Ressourcenklasse noch nicht erstellt, daher werde ich sie auskommentieren.
DropTestApplication.java
package dropTest.priv.jp.y.suzuki;
import io.dropwizard.Application;
import io.dropwizard.assets.AssetsBundle;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
public class DropTestApplication extends Application<DropTestConfiguration> {
//Haupteinstellungen
public static void main(String[] args) throws Exception {
new DropTestApplication().run(args);
}
//Bundle-Einstellungen
@Override
public void initialize(Bootstrap<DropTestConfiguration> bootstrap) {
bootstrap.addBundle(new AssetsBundle("/assets", "/", "index.html"));
bootstrap.addBundle(new AssetsBundle("/assets/css", "/css", null, "css"));
bootstrap.addBundle(new AssetsBundle("/assets/js", "/js", null, "js"));
}
//Registrierung von Ressourcenklassen
@Override
public void run(DropTestConfiguration conf, Environment env) throws Exception {
//Holen Sie sich die Informationen aus der Einstellungsdatei gelesen
String template = conf.getTemplate();
System.out.println(template); //Ob es gelesen werden konnte
// env.jersey().register(new SampleResource());
}
}
Erstellen Sie eine Ressourcenklasse, die Werte von der Bildschirmseite empfängt. Der Ort der Schöpfung ist wie folgt.
Erstellungsort: dropTest.priv.jp.y.suzuki.resource
Dieses Mal nimmt es einen Wert an und gibt ihn mit dem Eingabewort "" zurück: "
SampleResource.java
package dropTest.priv.jp.y.suzuki.resource;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/message")
public class SampleResource {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_PLAIN)
@Path("/response/{sentence}")
public String responseMessage(@PathParam("sentence") String sentence) {
String message = "Eingabewort:" + sentence;
return message;
}
}
Die obigen Punkte sind verschiedene Anmerkungen.
-- @ POST
gibt an, dass der Anruf nur während der POST-Kommunikation getätigt werden soll.
-- @ Consumes
・ @ Produces
gibt das Eingabe- / Ausgabeformat an. Dieses Mal werden das JSON-Format und das TEXT-Format angegeben.
-- @ PathParam
wird angegeben, um den Wert vom Bildschirm zu erhalten, und der Teil {Satz} wird mit dem angegebenen Typ (diesmal Zeichenfolge) erfasst.
-- @ Path
gibt das Anrufziel während der REST-Kommunikation per URL an
In diesem Fall ist diese Ressourcenklasse "/ message" und die Methode, die Sie ausführen möchten, ist "/ response / {satz}". Daher wird angenommen, dass es mit der folgenden URL ausgeführt wird, einschließlich des in der yml-Datei angegebenen Stammpfads.
POST-Kommunikation: / api / message / response /" Eingabeanweisung "
Registrieren Sie abschließend die Ressourcenklasse bei der bisher erstellten Anwendungsklasse, und Sie sind fertig.
DropTestApplication.java
import dropTest.priv.jp.y.suzuki.resource.SampleResource;
// ~Unterlassung~
//Registrierung von Ressourcenklassen
@Override
public void run(DropTestConfiguration conf, Environment env) throws Exception {
//Holen Sie sich die Informationen aus der Einstellungsdatei gelesen
String template = conf.getTemplate();
System.out.println(template); //Ob es gelesen werden konnte
env.jersey().register(new SampleResource()); //Überprüfen Sie, was zuvor auskommentiert wurde
}
}
Hier werden HTML und Javascript beschrieben, um den Bildschirm zu erstellen.
Erstellen Sie zunächst einen Ordner mit dem Namen "Assets" unter "src / main / resources".
Erstellen Sie eine index.html
-Datei und einen js
-Ordner unter den erstellten Assets
.
Erstellen Sie eine Javascript-Datei, die die Bewegung von "index.html" im erstellten "js" -Ordner beschreibt (diesmal "index.js").
Paketbeispiel: src/main/resources |__ assets |__ index.html |__ js |__ index.js
Dieses Mal werde ich ein einfaches erstellen, das das Eingabefeld, die Senden-Schaltfläche und die vom Server zurückgegebenen Zeichen anzeigt.
Es wird davon ausgegangen, dass jQuery für die Bildschirmanzeige und die REST-Kommunikation verwendet wird.
Daher [Download] jQuery (https://code.jquery.com/jquery-3.2.1.min.js) und platzieren Sie es in der js
-Datei.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DropwizardTEST</title>
<script src="js/jquery-3.2.1.min.js"></script>
<script src="js/index.js"></script>
</head>
<body>
<input type="text" id="inputSentence"><br>
<input type="button" id="start" value="REST-Kommunikation"><br>
<div><span id="result">Der Antwortinhalt wird hier geschrieben</span></div>
</body>
</html>
Hier wird die REST-Kommunikation ausgeführt, wenn die Taste gedrückt wird, und das Ergebnis wird ausgegeben. Dieses Mal werden wir jQuerys Ajax verwenden.
index.js
/**Reagiert auf Tastendruck*/
$(document).on('click', '#start', function() {
var SendData = $("#inputSentence").val();
Request("/api/message/response/" + SendData, "POST", null, resultOpen, FailAnon);
return false;
});
/**Für Ajax*/
function Request(Uri, Method, Data, CallbackFunc, ErrorCallbackFunc) {
$.ajax({
url: Uri,
type: Method,
data: Data,
contentType: "application/json; charset=utf-8",
cache: false
}).done(function(response){
CallbackFunc(response);
return false;
}).fail(function(XMLHttpRequest, textStatus, errorThrown) {
ErrorCallbackFunc();
return false;
});
return false;
}
/**Wird aufgerufen, wenn Ajax fehlschlägt*/
function FailAnon() {
$("#result").html("<b>ERROR!</b>Kommunikation fehlgeschlagen");
return false;
}
/**Zeigen Sie das Ergebnis an*/
function resultOpen(response) {
$("#result").html(response + "<br>");
return false;
}
Erstellen Sie die fertige Anwendung. Der Bau erfolgt in Maven. Erstellen Sie mit dem folgenden Befehl aus dem Projektverzeichnis. Wenn "BUILD SUCCESS" angezeigt wird, ist dies erfolgreich. Eine JAR-Datei sollte unter dem Zielverzeichnis erstellt werden.
Build-Befehl: maven package
Für die Ausführung sind zwei Dateien erforderlich. Es gibt zwei Dateien, eine vom Build erstellte JAR-Datei und eine Yaml-Datei, die als Konfigurationsdatei dient.
Der Ausführungsbefehl lautet wie folgt.
Beispiel für einen Ausführungsbefehl: java -jar target / droptest-0.0.1-SNAPSHOT.jar server config.yml
Öffnen wir das Web und überprüfen es, wenn der Start erfolgreich abgeschlossen wurde. Wenn Sie keine Verbindung herstellen können, können Sie die Ursache mithilfe des Ausgabeprotokolls oder des Entwicklermodus wie F12 leicht verstehen.
Übrigens kann die gestartete App wie viele Apps mit dem Befehl Strg + c
gestoppt werden.
Recommended Posts