Showing posts with label Web. Show all posts
Showing posts with label Web. Show all posts

Saturday, April 11, 2020

Dockeriser une application Angular




Docker est une plate-forme open source pour développer et exécuter des applications dans des conteneurs. 
Un conteneur permet de packager votre application avec toutes les bibliothèques qu'elle a besoin.
Cela vous permet de séparer les applications de l'infrastructure, ce qui facilite le déploiement du logiciel 
 
indépendamment de système d'exploitation et ses caractéristiques.
 Utiliser Docker, est devenu une méthode de travail largement utilisée. 
 
Nous allons créer une application simple en angular ,la dockerizer et lancer son  image. 
Nous allons utiliser NGINX comme serveur Web pour déployer l'application dans le conteneur.





Tout d'abord on doit créer l'application Angular comme dans ce vidéo:


On accède à l'application avec cet URL : http://localhost:4200/

 Une fois terminée, on écrit dans le terminal: touch Dockerfile.
Vous allez remarquer qu'un fichier Dockerfile  vient d’être créé dans notre projet et qui contient le symbole de conteneur.

Un fichier Dockerfile contiendra les instructions pour créer notre image docker.

Puisque nous allons utiliser le serveur NGINX, nous allons chercher l'image dans ce lien  https://hub.docker.com

Ceci est le contenu de fichier  Dockerfile

FROM node:latest as node
WORKDIR /app
COPY . .
RUN npm install
RUN npm run build --prod



FROM nginx:alpine

WORKDIR /usr/share/nginx/html
COPY --from=node /app/dist/angulardocker /usr/share/nginx/html

On va installer l'image de node, puis on va faire les commandes  que nous utilisons comme ci dans notre terminal.
La commande  ng build --prod   sert pour packager l'application en une  petite taille.

Comme vous remarquez, nous avons utilisé la version alpine de nginx afin d'avoir une image légère.

On envoie ceci au docker avec cette commande:

 docker build -t angularimage

 Pour construire l'image avec docker il faut lui donner un tag qui nous aurons besoin après pour exécuter le conteneur, dans notre cas nous l'avons nommé angularimage.

Nous pouvons vérifier que l'image est créée en écrivant: docker images

 
Pour exécuter l'image que nous avons créée on fait:  docker run -p 3000:80 angularimage

-p: pour indiquer que nous utilisons 80 comme port interne et 3000  comme port externe.

Pour accéder à l'application déployé  nous écrivons  L’URL: http://localhost:3000

Friday, October 11, 2019

Application web dynamique


Dans cet article nous allons vous présenter un exemple simple de développement d'une application jee ,montrant une architecture n-tiers et en utilisant MySQL et tomcat comme conteneur web.

Dans ce tutoriel vous allez comprendre les bases de jsp et servlet, et le concept de design pattern MVC2



Partie 1:






Partie 2:





Thursday, January 8, 2015

JSF :Affichage de la ligne selectionnée du tableau primefaces dans un dialogue


Dans cet exemple, on va montre comment afficher les details d'une ligne séléctionné dans tableau jsf.
Les details seront afficher dans un dialogue.
Tout d'abord voici le code de l'objet employe.



La classe departement.chaque employe appartient à un departement.



La classe ServiceBean qui est le managedBean:




finalement la page web :




Friday, January 2, 2015

Exemple JSP et SEVLET

Dans Cet exemple , on va montrer comment récuperer des données d'un formulaire dans une Servlet et afficher les resultats dans une autre page JSP.

Tout d'abord voci la page qui contient le formulaire :



Voici le code de la servlet







request.getParameter("nom") et request.getParameter("prenom"):La recuperation des valeurs des champs.
request.setAttribute("idnom", nom) et request.setAttribute("idprenom", prenom): stocker les données dans des attributs
getServletContext().getRequestDispatcher("/ResultatInscription.jsp").forward(request, response): se rediriger vers la page ResultatInscription.jsp

voici le code de ResultatInscription.jsp



<%=request.getAttribute("idnom") %>: c'est un scriplet expression pour recupérer les attributs par leur id et les afficher.

voici le vidéo de l'exemple:









Monday, December 29, 2014

JSF:Un exemple d'image dynamique en primefaces

Dans cet exemple , on va montrer comment travailler avec une image dynamique en utilisant le composant graphicImage du primefaces.

voici la classe du managedBean:



InputStream is = new FileInputStream("c://jsf.png"); Cette ligne va convertir le fichier de l'image en InputStream.

Voici le code de la page qui va afficher l'image .



Voici ce qu'on va obtenir aprés exécution:

Wednesday, December 24, 2014

JSF:Exemple d'affichage dans un tableau en JSF

Tout d'abord on doit créer la classe Person suivante:




Puis on developpe le ManagedBean.Notons bien que à partir de JSF2.0,les ManagedBean peut etre décalaré en utilisant @ManagedBean comme suit:

Ceci la page Consultation.jsp qui contient le code d'affichage du tableau en jsf






Monday, December 22, 2014

JSF:Exemple pour les débutants,contient un formulaireet navigation entre les pages selon un critère



Tout d'abord,on doit créer la classe etudiant suivante:






La page index.jsp


 La page failure.jsp








et la page succes.jsp







Le fichier faces-config.xml final doit etre comme suit:




















Wednesday, December 17, 2014

JSF:un simple exemple d'authentification


On va présenter un exemple de JSF.

Tout d'abord on doit créer la classe  BeanUser 


public class BeanUser {
String username;
String pwd;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}

public String login(){
if(username.equals("test") && pwd.equals("test"))
return "yes";
else

return "no";

}

}
Cette classe doit etre déclaré dans le fichier faces-config.xml  pour etre applelé de la page index.xhtml

<managed-bean>
<managed-bean-name>beanUser</managed-bean-name>
<managed-bean-class>training.jsf.BeanUser</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>



Voici la page index.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>demo jsf</title>
</head>
<body>
<f:view>
<h:form>
<h:messages style="color:red"/>
<h:panelGrid columns="2" bgcolor="cyan">
<h:outputText value="Username" />
<h:inputText value="#{beanUser.username }" required="true" requiredMessage="Username is required" />
<h:outputText value="Password" />
<h:inputSecret value="#{beanUser.pwd}" required="true" requiredMessage="Password is required"/>
<h:commandButton action="#{beanUser.login }" value="Ok" />
</h:panelGrid>
</h:form>
</f:view>
</body>
</html>

Maintenant , on va ajouter la page accueil.jsp suivante:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<f:view>
Bienvenue <h:outputText value="#{beanUser.username}" />
</f:view>
</body>
</html>

et dans le fichier  faces-config.xml  ,on doit ajouter les regles de navigation comme suit:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
 <managed-bean>
  <managed-bean-name>beanUser</managed-bean-name>
  <managed-bean-class>training.jsf.BeanUser</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
 <navigation-rule>
  <display-name>index</display-name>
  <from-view-id>/index.jsp</from-view-id>
  <navigation-case>
   <from-outcome>yes</from-outcome>
   <to-view-id>/accueil.jsp</to-view-id>
  </navigation-case>
 </navigation-rule>
</faces-config>

Le vidéo suivant peut vous aider à mieux compendre ceci.

Monday, December 1, 2014

GWT(Google Web Toolkit :cours

Historique

Projet racheté à 1 start up
Créé par Bruce Johnson, aujourd’hui chez Google
Proposé en Open source fin 2006
Dès le début, une forte communauté,
La plupart des services Google sont codés avec GWT (gmail, agenda, google maps, etc.)

GWT ?
Un framework pour créer des applications Web riches, en Java.
-La partie serveur est compilée avec le JDK.
-La partie client est compilée en javascript par le compilateur GWT.


Avantages
Tout le monde connait bien Java,
On développe avec des outils de haut niveau (Eclipse, Netbeans, etc.).

Possibilité de débugger pas à pas comme toute classe java.

Portabilité du code (GWT supporte tous les navigateurs modernes).


GWT :performant
Obfuscation du code JS.

Chargement des scripts dans une iframe cachée en tâche de fond.

Le navigateur charge les fonctions .

Lors de la compilation, le code de la partie client est compilé en JS pour chacun des navigateurs supporté
Le navigateur client gardera en cache le code approprié.

Structure d'un projet GWT


un projet GWT, contrairement à un projet Java classique, possède une structure très particulière. 
 On peut globalement identifier quatre parties logiques  dans un projet GWT :


Øle code client (ou partagé entre client et serveur) ;Ø Ø le code serveur ;
Øles fichiers de configuration de module ;
Ø
Ø le répertoire WAR.
Module descriptor



Module Descriptors


  •       Un  module descriptor :est le fichier de configuration en format XML pour configurer  l'application  GWT.
         A module descriptor :son extension est *.gwt.xml, ou  * est le nom de l application comme Demo.gwt.xml pour une application appelle Demo





-Description du noued

module rename-to=« Demo">
Indique le nom de l application
 
<inherits name="logical-module-name" />
Pour inclure d autre module dans l application comme l import desclasses en java
 
<entry-point class="classname" />
Ici indique la classe d entrée de l application, lors de chargement de l'application.

NB:on peut indiquer plusieurs entrée.qui sront chargees sequentiellement.



<source path="path" />
Reertoire ressource  dont GWT compiler cherche les ressources pour la compilation.
 
<public path="path" />
c est le chemin ou sont référencés les ressources  statiques resources dans GWT module, comme  CSS ou images, sont enregistrees.
<stylesheet src="css-url" />
Injection du fichier CSS   


Exemple du projet GWT:





Exemple du client GWT:




Wednesday, October 29, 2014

Exemple JSF authentfication avec primefaces


I
-Exemple JSF authentfication avec primefaces:

    Tout d'abord nous allons declarer trois attributs dans la classe LoginBean qui est un managedBean. 

    private String username;
    private String password;
    private boolean loggedIn;
    1. créer la methode doLogin


    public String doLogin() {
    if (username.equals("test") && password.equals("test")) {
    loggedIn = true;
     return "home";
    }
    FacesMessage msg = new FacesMessage("Login error!", "ERROR MSG");
            msg.setSeverity(FacesMessage.SEVERITY_ERROR);
            FacesContext.getCurrentInstance().addMessage(null, msg);
         return "/login.xhtml";
    }


    2-creer dans login.xhtml le formulaire suivant:


    <h:form id="login-form">
          <h:messages />
          <h:panelGrid columns="2">
            <h:outputText value="username:"/>
            <p:inputText value="#{loginBean.username}" id="username"/>
           
            <h:outputText value="password:"/>
            <p:password value="#{loginBean.password}" id="password"/>
        
            <p:commandButton id="button" value="Login" action="#{loginBean.doLogin}"/>
            
         </h:panelGrid>
           
        
         </h::form>


    3-Dans la page home.xhtml nous allons developper le code suivant:

    <h:form>
    <p:panel header="Accueil">
      <p>Bienvneue</p>

    <h:outputText value="#{loginBean.username}"/>

    <p:commandButton action="#{loginBean.doLogout}" value="Déconnecter"/>
    </p:panel>
    </h:form>


    3-le boutton Déconnecter va appeler la methode suivante dans LoginBean


    public String doLogout() {

    // Set the paremeter indicating that user is logged in to falseloggedIn = false;





    FacesMessage msg = new FacesMessage("Déconnexion avec success!", "INFO MSG");

    msg.setSeverity(FacesMessage.SEVERITY_INFO);

    FacesContext.getCurrentInstance().addMessage(null, msg);



    return "/login.xhtml";




    }


    II-Filter dans JSF et primefaces:

    -Tout d'abors ous allons creer notre classe Filter:

    public class LoginFilter implements Filter {

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    LoginBean loginBean = (LoginBean)((HttpServletRequest)request).getSession().getAttribute("loginBean");
    if (loginBean == null || !loginBean.isLoggedIn()) {
    String contextPath = ((HttpServletRequest)request).getContextPath();
    ((HttpServletResponse)response).sendRedirect(contextPath + "/login.xhtml");
    }
    chain.doFilter(request, response);
    }

    @Override
    public void destroy() {
    // TODO Auto-generated method stub
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
    // TODO Auto-generated method stub
    }

    }

    dans le fichier Web.xml je dois ajouter la déclaration du filter et de son mapping:



    </filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>com.examples.filters.LoginFilter</filter-class>
    </filter>


    <filter-mapping>
    <filter-name>LoginFilter</filter-name>
    <url-pattern>/secured/*</url-pattern>
    </filter-mapping>

    Monday, October 27, 2014

    Initiation JSF:
    Dans cet exemple nous allons montrer un petit exemple d'une page JSF:

    tout d'abord nous allons créer un projet Web dynamique demojsf. Dans la partie configuration nous devons choisir JavaServer Faces V2.0 Project



    nous allons creer une page jsp comme suit:



    Cette page sera dans WebContent de notre projet Web dynamique.



    on ne doit pas oublier de mettre les lib jsf-api ,jsf-impl et jstl dans le repertoire  WEB-INF/lib de notre projet.