001: /**
002: * <p>
003: * Title: Connection
004: * </p>
005: *
006: * <p>
007: * Description: Represente une entete HTTP
008: * </p>
009: *
010: * <p>
011: * Copyright: Copyright (c) 2005
012: * </p>
013: *
014: * commentaire inutile
015: *
016: * <p>
017: * Company:
018: * </p>
019: *
020: * @author Adlani Anouar - Detante Antoine - Klein Gregory - Pepin Pierre
021: * @version 1.0
022: */package httpserver;
023:
024: import java.io.IOException;
025: import java.io.PrintWriter;
026: import java.util.Hashtable;
027: import java.util.Enumeration;
028:
029: public abstract class EnteteHTTP {
030: // Hashtable contenant les champs de l'enteteHTTP
031: private Hashtable champs;
032:
033: /**
034: * Creer une instance de EnteteHTTP
035: */
036: public EnteteHTTP() {
037: champs = new Hashtable();
038: }
039:
040: /**
041: * Permet d'ajouter un champ dans la hashtable
042: * @param nomParametre String nom du champ
043: * @param valeurParametre String valeur du champ
044: */
045: public void ajouterChamps(String nomParametre,
046: String valeurParametre) {
047: if (!contientChamps(nomParametre))
048: champs.put(nomParametre, valeurParametre);
049: else
050: modifierChamps(nomParametre, valeurParametre);
051: }
052:
053: /**
054: * Methode qui permet de connaitre la valeur d'un champ
055: * @param nomParametre String nom du champ
056: * @return String valeur du champ
057: */
058: public String getChamps(String nomParametre) {
059: return (String) champs.get(nomParametre);
060: }
061:
062: /**
063: * Methode qui permet de savoir si un certain champ existe dans la hashtable
064: * @param nomParametre String nom du champ
065: * @return boolean true si le champ existe false sinon
066: */
067: public boolean contientChamps(String nomParametre) {
068: return champs.containsKey(nomParametre);
069: }
070:
071: /**
072: *
073: * @param nomParametre
074: * @param nouvelleValeur
075: */
076: public void modifierChamps(String nomParametre,
077: String nouvelleValeur) {
078: champs.remove(nomParametre);
079: champs.put(nomParametre, nouvelleValeur);
080: }
081:
082: /**
083: * Methode qui permet d'avoir un champ complet sous forme de chaine de caractères
084: * @param nomParametre String nom du champ
085: * @return String champ complet
086: */
087: public String champsToString(String nomParametre) {
088: if (this .contientChamps(nomParametre))
089: return new String(nomParametre + ": "
090: + getChamps(nomParametre) + "\n");
091: else
092: return new String("");
093: }
094:
095: /**
096: * Construit une chaine qui correspont à l'EnteteHTTP à envoyer
097: * @return String entete à evoyer
098: */
099: public String toString() {
100: StringBuffer sb = new StringBuffer();
101: Enumeration enumer = champs.keys();
102: while (enumer.hasMoreElements()) {
103: Object key = enumer.nextElement();
104: sb.append(new String((String) key + ": "
105: + (String) champs.get(key) + "\n"));
106: }
107: return sb.toString();
108: }
109:
110: /**
111: * Methode qui permet d'envoyer l'EnteteHTTP
112: * @param output PrintWriter flux d'ecriture de texte pour ecrire sur le socket client
113: * @throws IOException si erreur d'envoi
114: */
115: public void envoyerEntete(PrintWriter output) throws IOException {
116: output.print(this .toString());
117: //output.flush();
118: }
119:
120: }
|