Nachdem ich kürzlich die Java-Servlet-Entwicklung studiert, einige einfache Apps in der lokalen Umgebung erstellt und ausprobiert hatte, wollte ich sie dem Server geben, aber viele Blog-Artikel und Erklärungen sind in Maven und Es gibt viele Artikel über Apps, die Gradle usw. verwenden, und ich hatte Probleme, weil ich nicht wusste, wie es geht, als ich nur eine einfache Servlet-App bereitstellen wollte. Deshalb habe ich es selbst geschrieben, als ich ein Memorandum hatte.
Wählen Sie in der Eclipse-Umgebung im Kontextmenü die Option Dynamische Projektdatei exportieren aus und exportieren Sie sie als War-Datei.
Wählen Sie das Exportziel als Ziel und exportieren Sie es in ein beliebiges Verzeichnis.
Es wird davon ausgegangen, dass die Heroku-CLI im Voraus installiert wurde. Klicken Sie hier zur Installation (https://devcenter.heroku.com/articles/getting-started-with-java#set-up).
$ heroku login
Ich denke, dies kann entweder von der CLI oder von Herokus Webanwendung stammen.
Beim Erstellen aus dem Web können Sie eine App über die Schaltfläche Neu oben rechts im Dashboard erstellen.
Wenn Sie die Servlet-App mit der War-Datei bereitstellen möchten, laden Sie diese CLI herunter.
$ heroku plugins:install java
Geben Sie den folgenden Befehl ein.
$ heroku war:deploy <Direkter Pfad zur Kriegsdatei> --app <Heroku-App-Name früher erstellt>
Sie erhalten die folgenden Ergebnisse.
8.5.57/webapps/App/ShoppingCart.war --app shoppingcartjava
› Warning: heroku update available from 7.35.1 to 7.42.4.
Uploading ShoppingCart.war
-----> Packaging application...
- app: shoppingcartjava
- including: webapp-runner.jar
- including: ShoppingCart.war
-----> Creating build...
- file: slug.tgz
- size: 21MB
-----> Uploading build...
- success
-----> Deploying...
remote:
remote: -----> heroku-deploy app detected
remote: -----> Installing JDK 1.8... done
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote:
remote: -----> Compressing...
remote: Done: 72.3M
remote: -----> Launching...
remote: Released v3
remote: https://shoppingcartjava.herokuapp.com/ deployed to Heroku
remote:
-----> Done
https://shoppingcartjava.herokuapp.com/ ist das Ziel für die Bereitstellung der App.
Es wurde angezeigt!
Der Referenzartikel ist der offizielle Doc von Heroku unten. https://devcenter.heroku.com/articles/war-deployment
Übrigens, als ich versuchte, mich bei der App anzumelden, die ich oben auf den Server hochgeladen habe, bekam ich einen 404-Fehler.
Ich kann den Anmeldebildschirm nicht finden. Der Code von web.xml
und der oberste Bildschirm index.jsp
lautet zu diesem Zeitpunkt wie folgt.
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>ShoppingCart</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>Login</display-name>
<servlet-name>Login</servlet-name>
<servlet-class>servlet.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>ShopMain</display-name>
<servlet-name>ShopMain</servlet-name>
<servlet-class>servlet.ShopMain</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ShopMain</servlet-name>
<url-pattern>/ShopMain</url-pattern>
</servlet-mapping>
</web-app>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Willkommen auf der Einkaufsseite</h1>
<p>Anmeldemenü</p>
<form action="/ShoppingCart/Login" method="post">
<label for="userName">Nutzername: </label><input type="text" name="userName">
<label for="pass">Passwort: </label><input type="text" name="pass">
<input type="submit" value="submit">
</form>
</body>
</html>
Die Ursache hierfür ist, dass in index.jsp
der Pfad zur Servlet-Klasse durch den Pfad / ShoppingCart / Login
angegeben wurde (es gibt kein Problem, wenn dies von Eclipse auf dem lokalen Server aus erfolgt), aber nicht lokal. Wenn Sie den Zugriff mit demselben Pfad auf Ihrem Server erreichen möchten, ändern Sie den Pfad wie folgt in "web.xml" oder den Zielpfad für Formularaktionen von "index.jsp" in "/ Login". müssen es tun.
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>ShoppingCart</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>Login</display-name>
<servlet-name>Login</servlet-name>
<servlet-class>servlet.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/ShoppingCart/Login</url-pattern>
</servlet-mapping>
<servlet>
<description></description>
<display-name>ShopMain</display-name>
<servlet-name>ShopMain</servlet-name>
<servlet-class>servlet.ShopMain</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ShopMain</servlet-name>
<url-pattern>/ShoppingCart/ShopMain</url-pattern>
</servlet-mapping>
</web-app>
Recommended Posts