J'ai essayé d'exécuter une application d'accès à la base de données sur IKS + Db2 sur IBM Cloud (6. Préparation de l'application d'accès à la base de données (java))

introduction

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.

Préparation de l'environnement de compilation

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.)

49.png

Sur le lien, téléchargez à partir de l'édition complète de Java.

50.png

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".

51.png

Préparation de la source

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».

52.png

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".

53.png

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".

54.png

Ici, le nom du package est counter et le nom de la classe est Counter. Spécifiez jusqu'à ce point et appuyez sur "Terminer".

55.png

Counter.java apparaît dans l'arborescence de l'Explorateur de packages et la source Counter.java apparaît dans le volet droit.

56.png 57.png

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.

sortie du fichier war

À 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.

58.png

Ouvrez un dossier sur le Web, sélectionnez "Fichier WAR" et appuyez sur "Suivant".

59.png

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.

60.png


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

J'ai essayé d'exécuter une application d'accès à la base de données sur IKS + Db2 sur IBM Cloud (6. Préparation de l'application d'accès à la base de données (java))
J'ai essayé d'exécuter Java dans un terminal Mac
J'ai créé un environnement Java EE sur AWS et essayé d'exécuter une application Web
J'ai essayé d'exécuter une application d'échange de cartes de crédit avec Corda 1
J'ai essayé d'utiliser Log4j2 sur un serveur Java EE
J'ai essayé de moderniser une application Java EE avec OpenShift.
J'ai créé un client RESAS-API en Java
J'ai essayé d'utiliser la fonction de cache d'Application Container Cloud Service
Accéder à Teradata depuis une application Java
J'ai essayé d'utiliser Google HttpClient de Java
J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»
Volume d'essais pour créer une application Web Java sur Windows Server 2016
Mesure de la mémoire des applications Java sous Windows
[Java] Créons une bibliothèque d'accès à la base de données!
J'ai essayé de cloner une application Web pleine de bugs avec Spring Boot
J'ai essayé de mettre facilement Java sur mon Mac
java j'ai essayé de casser un simple bloc
J'ai essayé de frapper une méthode Java d'ABCL
J'ai essayé de casser le bloc avec java (1)
Comme je l'utilise souvent, je note les choses liées à DB sur Android.
[Azure] J'ai essayé de créer une application Java gratuitement ~ Se connecter avec FTP ~ [Débutant]
Je souhaite l'implémenter en plus lors de l'utilisation de kotlin sur un site exécutant Java
Déployer des applications Java sur le service IBM Cloud Kubernetes
J'ai essayé de créer une compétence Clova en Java
J'ai essayé OCR de traiter un fichier PDF avec Java
J'ai essayé de gratter un graphique boursier en utilisant Java (Jsoup)
[Version d'octobre 2019] J'ai essayé d'exécuter une démo de l'API Quarkus REST avec KeyCloak avec docker-compose.
J'ai essayé de convertir l'exemple d'application en microservice selon l'idée du livre "Microservice Architecture".
J'ai essayé de développer une application web à partir d'un mois et demi d'histoire d'apprentissage de la programmation
[Java] J'ai essayé de créer un jeu Janken que les débutants peuvent exécuter sur la console
J'ai essayé de développer la fonction de cache d'Application Container Cloud Service dans l'environnement local