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.
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.)
Laden Sie unter dem Link die Full Edition von Java herunter.
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".
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".
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".
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".
Hier ist der Paketname counter und der Klassenname Counter. Geben Sie bis zu diesem Punkt an und klicken Sie auf "Fertig stellen".
Counter.java wird in der Paket-Explorer-Struktur angezeigt, und die Counter.java-Quelle wird im rechten Bereich angezeigt.
Ü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.
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.
Öffnen Sie einen Ordner im Web, wählen Sie "WAR-Datei" und klicken Sie auf "Weiter".
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.
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)