Ich habe versucht, die DB-Zugriffsanwendung unter IKS + Db2 in IBM Cloud auszuführen (6. Vorbereitung der DB-Zugriffsanwendung (Java)).

Einführung

Dies ist die sechste Ausgabe von "IKS + Db2 in IBM Cloud zum Ausführen der DB-Zugriffs-App". Hier beschreiben wir die Vorbereitung des Beispielantrags.

Die Details der Implementierung sind wie folgt.

Ich bin selbst kein Anwendungsentwickler, also ein besserer Weg Ich denke, es gibt Codes mit höherer Qualität usw., aber in diesem Artikel besteht der Hauptzweck darin, sie zu verschieben. Bitte beachten Sie, dass Qualität, Sicherheit, Fehlerbehandlung usw. nicht berücksichtigt werden. Ich persönlich mag die hartcodierten Tabellennamen nicht, aber keine Sorge.

Kompilierungsumgebung vorbereiten

Zum Kompilieren aus der Quelle einer Java-Anwendung ist eine IDE (Integrated Development Environment) erforderlich, die das JDK enthält. (Genau genommen können Sie nur mit dem JDK kompilieren ...)

Verwenden Sie Eclipse für die IDE. (Es gibt keine tiefe Bedeutung. Alles ist in Ordnung) Ich bin Eclipse, aber ich bin ein Anfänger, daher verwende ich das Plejaden-All-in-One-Paket. Es scheint, dass es Java EE in einem unterstützen kann. Die Person, die es gemacht hat, wird Kopfschmerzen haben. ..

Laden Sie die Datei für Windows von Pleiades All in One Package herunter. (Dieses Mal verwende ich Eclipse 2020 in der folgenden Abbildung.)

49.png

Laden Sie unter dem Link die Full Edition von Java herunter.

50.png

Entpacken Sie nach dem Herunterladen die Zip-Datei. (Wenn der Pfad lang ist, kann ein Fehler auftreten. Platzieren und erweitern Sie ihn daher so kurz wie möglich.)

Doppelklicken Sie nach dem Entpacken im Ordner eclipse auf eclipse.exe. Übernehmen Sie auf dem Bildschirm zur Auswahl des Arbeitsbereichs die Standardeinstellungen und klicken Sie auf die Schaltfläche "Start".

51.png

Quellenvorbereitung

Nach dem Start von Eclipse wird der Bildschirm "Paket-Explorer" angezeigt. Klicken Sie auf den Link "Projekt erstellen ...". Wählen Sie im angezeigten Fenster "Dynamisches Webprojekt" und klicken Sie auf "Weiter".

52.png

Geben Sie den Projektnamen an (diesmal LibertyCounter) und wählen Sie Java8 als Ziellaufzeit aus. (Es muss nicht Java8 sein ...) Klicken Sie dann auf die Schaltfläche "Fertig stellen".

53.png

Der Paket-Explorer wird angezeigt. Erweitern Sie daher den dort angezeigten Projektbaum. Klicken Sie mit der rechten Maustaste in den src-Teil und wählen Sie "Neu"> "Klasse".

54.png

Hier ist der Paketname counter und der Klassenname Counter. Geben Sie bis zu diesem Punkt an und klicken Sie auf "Fertig stellen".

55.png

Counter.java wird in der Paket-Explorer-Struktur angezeigt, und die Counter.java-Quelle wird im rechten Bereich angezeigt.

56.png 57.png

Überschreiben Sie dieses Quellfenster mit der folgenden Quelle. Die Quelle selbst ist die Bereitstellung einer vorhandenen JDBC-Anwendung für Liberty (https://www.ibm.com/support/knowledgecenter/en/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/twlp_dep_jdbc.html). ) Basiert auf dem in. Ich werde zuerst den vollständigen Text veröffentlichen, aber danach werde ich den Punktteil aufgreifen und ergänzen.

Counter.java


package counter;

import java.io.*;
import java.net.InetAddress;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.annotation.Resource;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.WebServlet;
import javax.sql.DataSource;

/**
 * Servlet implementation class Counter
 */
@WebServlet("/Counter")
public class Counter extends HttpServlet {
	@Resource(name = "jdbc/sample")
	private DataSource ds1;
	private Connection con = null;
	private String hostname = null;
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Counter() {
        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
		
		hostname = getHostName();
		
	        response.setContentType("text/html");
	        PrintWriter out = response.getWriter();
	        out.println("<H1>Response from : "+ hostname +"</H1>\n");
	        try {
	           con = ds1.getConnection();
	           Statement stmt = null;
	           stmt = con.createStatement();

	           // check if hostname exists
	           ResultSet result = stmt.executeQuery("select distinct hostname from test01 where hostname='"+hostname+"'");
	       
	           if( !result.next() ) {
	        	   out.println("Insert hostname into test01<br>\n");
			   stmt.executeUpdate("insert into test01 values ('"+hostname+"','1')");
	           } else {
	    	       out.println("Update hostname access count in test01<br>\n");
		       stmt.executeUpdate("update test01 set count=count+1 where hostname='"+hostname+"'");
	           }
	       
		   ResultSet result2 = stmt.executeQuery("select * from test01");
		   
		   while(result2.next()) {
			   out.println("<font size=\"+2\">"+result2.getString(1)+" : </font><font size=\"+2\" color=\"red\">"+result2.getInt(2)+"</font><br>\n");
		   }
	        }	    
	        catch (SQLException e) {
		    e.printStackTrace();
	        }
                finally {
                    if (con != null){
    	                out.println("<H1>DB2 Output Completed</H1>\n");
                        try{
                            con.close();
                        }
                        catch (SQLException e) {
                           e.printStackTrace();
                        } 
                }
            }
        }

	/**
	 *  getHostName
	 * 
	 */
	
	public static String getHostName() {
	    try {
	        return InetAddress.getLocalHost().getHostName();
	    }catch (Exception e) {
	        e.printStackTrace();
	    }
	    return "UnknownHost";
	}
	
	
	/**
	 * @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);
	}

}

Das Folgende ist ein Auszug.

Zugriff mit / Counter. Verwenden Sie außerdem "jdbc / sample" als JDBC-Ressource, wenn Sie eine Verbindung zu einer Datenbank herstellen. (Harter Code ...)

@WebServlet("/Counter")
public class Counter extends HttpServlet {
	@Resource(name = "jdbc/sample")

Verwenden Sie in der doGet-Methode die private Methode getHostName to Ich bekomme den Hostnamen. Als Antwort wird die Zeichenfolge auch in Form von festem HTML gespeichert.

		hostname = getHostName();
		
	        response.setContentType("text/html");
	        PrintWriter out = response.getWriter();
	        out.println("<H1>Response from : "+ hostname +"</H1>\n");

Stellen Sie eine Verbindung zur Datenbank her. Dieser Bereich ist ein magisches Ziel.

	        try {
	           con = ds1.getConnection();
	           Statement stmt = null;
	           stmt = con.createStatement();

Das erste, was Sie tun müssen, ist die Verwendung der SQL-Anweisung "select different ...", um festzustellen, ob "hostname" bereits registriert ist. Wenn es nicht abgerufen werden kann (dh der erste Zugriff), speichert die Anweisung "Einfügen" den Hostnamen und die Daten 1 in der Tabelle. In diesem Fall erhöht die Anweisung "Update" die Zählspalte um +1.

	           // check if hostname exists
	           ResultSet result = stmt.executeQuery("select distinct hostname from test01 where hostname='"+hostname+"'");
	       
	           if( !result.next() ) {
	        	   out.println("Insert hostname into test01<br>\n");
			   stmt.executeUpdate("insert into test01 values ('"+hostname+"','1')");
	           } else {
	    	       out.println("Update hostname access count in test01<br>\n");
		       stmt.executeUpdate("update test01 set count=count+1 where hostname='"+hostname+"'");
	           }
	       

Anschließend werden alle Daten in der Tabelle abgerufen und in der Antwortvariablen im HTML-Format gespeichert.

		   ResultSet result2 = stmt.executeQuery("select * from test01");
		   
		   while(result2.next()) {
			   out.println("<font size=\"+2\">"+result2.getString(1)+" : </font><font size=\"+2\" color=\"red\">"+result2.getInt(2)+"</font><br>\n");

Das ist alles für den logischen Teil. Wenn Sie an anderen Teilen interessiert sind, überprüfen Sie bitte.

Ausgabe der Kriegsdatei

Ursprünglich ist es ein Ort zum Testen mit Kater usw., der in Eclipse registriert ist, aber Überspringen Sie diesen Bereich und geben Sie die Kriegsdatei aus.

Klicken Sie mit der rechten Maustaste auf das LibertyCounter-Projekt und wählen Sie Exportieren.

58.png

Öffnen Sie einen Ordner im Web, wählen Sie "WAR-Datei" und klicken Sie auf "Weiter".

59.png

Klicken Sie auf die Schaltfläche "Durchsuchen", geben Sie den Namen des Ausgabezielordners / der Datei an und klicken Sie dann auf "Fertig stellen". Die WAR-Datei wird ausgegeben.

60.png


Danke für deine harte Arbeit. Das ist alles für diese Zeit und das nächste Mal werden wir [7. Vorbereiten des WebSphere Liberty-Containers] durchführen.

←: Ich habe versucht, die DB-Zugriffs-App auf IKS + Db2 in der IBM Cloud auszuführen (5. Db2 in der IBM Cloud-Vorbereitung) ↑: Ich habe versucht, die DB-Zugriffs-App auf IKS + Db2 in IBM Cloud auszuführen (1. Übersicht) →: Ich habe versucht, die DB-Zugriffs-App auf IKS + Db2 in IBM Cloud auszuführen (7. Vorbereiten des WebSphere Liberty-Containers)


Recommended Posts

Ich habe versucht, die DB-Zugriffsanwendung unter IKS + Db2 in IBM Cloud auszuführen (6. Vorbereitung der DB-Zugriffsanwendung (Java)).
Ich habe versucht, Java in einem Mac-Terminal auszuführen
Ich habe eine Java EE-Umgebung auf AWS erstellt und versucht, eine Webanwendung auszuführen
Ich habe versucht, eine Kreditkartenhandelsanwendung mit Corda 1 auszuführen
Ich habe versucht, Log4j2 auf einem Java EE-Server zu verwenden
Ich habe versucht, eine Java EE-Anwendung mit OpenShift zu modernisieren.
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe versucht, die Cache-Funktion des Application Container Cloud Service zu verwenden
Greifen Sie über eine Java-Anwendung auf Teradata zu
Ich habe versucht, Google HttpClient von Java zu verwenden
Ich habe versucht, mit AI "A3RT" eine Talk-App in Java zu erstellen.
Umfang des Versuchs, eine Java-Webanwendung unter Windows Server 2016 zu erstellen
Speichermessung von Java-Apps unter Windows
[Java] Erstellen wir eine DB-Zugriffsbibliothek!
Ich habe versucht, eine Webanwendung voller Fehler mit Spring Boot zu klonen
Ich habe versucht, Java einfach auf meinen Mac zu bringen
Java Ich habe versucht, einen einfachen Block zu brechen
Ich habe versucht, eine Java-Methode von ABCL zu verwenden
Ich habe versucht, den Block mit Java zu brechen (1)
Da ich es oft benutze, notiere ich mir DB-bezogene Dinge auf Android.
[Azure] Ich habe versucht, eine kostenlose Java-App zu erstellen ~ Mit FTP verbinden ~ [Anfänger]
Ich möchte es zusätzlich implementieren, während ich Kotlin auf einer Site verwende, auf der Java ausgeführt wird
Stellen Sie Java-Apps auf dem IBM Cloud Kubernetes-Dienst bereit
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
Ich habe versucht, mit OCR eine PDF-Datei mit Java zu verarbeiten
Ich habe versucht, ein Aktienchart mit Java (Jsoup) zu kratzen.
[Version Oktober 2019] Ich habe versucht, eine Demo der Quarkus REST-API mit KeyCloak mit Docker-Compose auszuführen.
Ich habe versucht, die Beispielanwendung gemäß der Idee des Buches "Micro Service Architecture" in einen Mikrodienst zu verwandeln.
Ich habe versucht, eine Webanwendung aus anderthalb Monaten Programmier-Lerngeschichte zu entwickeln
[Java] Ich habe versucht, ein Janken-Spiel zu erstellen, das Anfänger auf der Konsole ausführen können
Ich habe versucht, die Cache-Funktion von Application Container Cloud Service in der lokalen Umgebung zu entwickeln