Il s'agit du 6e volet de «IKS + Db2 sur IBM Cloud pour exécuter l'application d'accès à la base de données». Ici, nous décrirons la préparation de l'exemple d'application.
Les détails de la mise en œuvre sont les suivants.
Je ne suis pas développeur d'applications moi-même, donc une meilleure façon Je pense qu'il existe des codes de qualité supérieure, etc., mais dans cet article, le but principal est de le déplacer. Veuillez noter que la qualité, la sécurité, la gestion des erreurs, etc. ne sont pas prises en compte. Personnellement, je n'aime pas les noms de table codés en dur, mais ne vous inquiétez pas.
Un IDE (environnement de développement intégré) qui inclut le JDK est requis pour compiler à partir de la source d'une application Java. (Strictement parlant, vous pouvez compiler avec juste le JDK ...)
Utilisez Eclipse pour l'EDI. (Il n'y a pas de sens profond. Tout va bien) Je suis Eclipse, mais je suis un débutant, donc j'utilise le Pleiades All in One Package. Il semble qu'il puisse prendre en charge Java EE tout en un. La personne qui l'a fait aura mal à la tête. ..
Téléchargez le fichier pour Windows à partir de Pleiades All in One Package. (Cette fois, j'utilise Eclipse 2020 dans la figure ci-dessous.)
Sur le lien, téléchargez à partir de l'édition complète de Java.
Après le téléchargement, décompressez le fichier zip. (Si le chemin est long, une erreur peut se produire, alors placez-le et développez-le aussi court que possible.)
Après la décompression, double-cliquez sur eclipse.exe dans le dossier eclipse. Sur l'écran de sélection de l'espace de travail, laissez les valeurs par défaut et appuyez sur le bouton "Démarrer".
Après avoir démarré eclipse, l'écran de l'Explorateur de packages s'affiche. Cliquez sur le lien "Créer un projet ...". Dans la fenêtre qui apparaît, sélectionnez «Projet Web dynamique» et appuyez sur «Suivant».
Donnez le nom du projet (LibertyCounter cette fois) et sélectionnez Java8 comme runtime cible. (Il n'est pas nécessaire que ce soit Java8 ...) Appuyez ensuite sur le bouton "Terminer".
L'Explorateur de packages sera affiché, développez donc l'arborescence du projet qui y est affichée. Faites un clic droit dans la partie src> sélectionnez "Nouveau"> "Classe".
Ici, le nom du package est counter et le nom de la classe est Counter. Spécifiez jusqu'à ce point et appuyez sur "Terminer".
Counter.java apparaît dans l'arborescence de l'Explorateur de packages et la source Counter.java apparaît dans le volet droit.
Remplacez cette fenêtre source par la source suivante. La source elle-même déploie une application JDBC existante sur Liberty (https://www.ibm.com/support/knowledgecenter/en/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/twlp_dep_jdbc.html) ) Est basé sur celui décrit dans. Je publierai d'abord le texte intégral, mais après cela, je reprendrai et compléterai le point.
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);
}
}
Ce qui suit est un extrait.
Accès avec / Counter
. Utilisez également jdbc / sample
comme ressource JDBC lors de la connexion à une base de données. (Code dur ...)
@WebServlet("/Counter")
public class Counter extends HttpServlet {
@Resource(name = "jdbc/sample")
Dans la méthode doGet, utilisez la méthode privée getHostName pour J'obtiens le nom d'hôte. De plus, en guise de réponse, la chaîne de caractères est stockée sous la forme de HTML solide.
hostname = getHostName();
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<H1>Response from : "+ hostname +"</H1>\n");
Obtenez une connexion à la base de données. Cette zone est une cible magique.
try {
con = ds1.getConnection();
Statement stmt = null;
stmt = con.createStatement();
La première chose à faire est d'utiliser l'instruction SQL select distinct ...
pour voir si hostname
est déjà enregistré.
S'il ne peut pas être obtenu (c'est-à-dire le premier accès), l'instruction ʻInsert stocke le nom d'hôte et les données 1 dans la table. S'il peut être obtenu, la colonne count est +1 dans l'instruction ʻUpdate
.
// 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+"'");
}
Ensuite, il récupère toutes les données du tableau et les stocke dans la variable de réponse au format HTML.
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");
C'est tout pour la partie logique. Si vous êtes intéressé par d'autres pièces, veuillez vérifier.
À l'origine, c'est un endroit pour tester avec tomcat etc. enregistré dans eclipse, mais Ignorez cette zone et sortez le fichier war.
Cliquez avec le bouton droit sur le projet LibertyCounter et sélectionnez Exporter.
Ouvrez un dossier sur le Web, sélectionnez "Fichier WAR" et appuyez sur "Suivant".
Cliquez sur le bouton "Parcourir", spécifiez le nom du dossier / fichier de destination de sortie, puis appuyez sur "Terminer". Le fichier WAR est sorti.
Je vous remercie pour votre travail acharné. C'est la fin de cette période, et la prochaine fois, nous effectuerons [7. Préparation du conteneur WebSphere Liberty].
←: J'ai essayé d'exécuter l'application d'accès à la base de données sur IKS + Db2 sur IBM Cloud (5. Db2 sur préparation IBM Cloud) ↑: J'ai essayé d'exécuter l'application d'accès à la base de données sur IKS + Db2 sur IBM Cloud (1. Présentation) →: J'ai essayé d'exécuter l'application d'accès à la base de données sur IKS + Db2 sur IBM Cloud (7. Préparation du conteneur WebSphere Liberty)
Recommended Posts