Programation client serveur

Fermé
yenku - 4 nov. 2012 à 13:31
yenku Messages postés 11 Date d'inscription dimanche 4 novembre 2012 Statut Membre Dernière intervention 22 mars 2013 - 4 nov. 2012 à 18:59
Bonjour,
Voila je suis actuellement en licence Pro et j'ai un projet a réaliser dont voici le sujet:

1) Écrire un programme qui écoute le port 8080 et affiche tout ce qu'il reçoit à l'écran.
Connectez-vous à ce programme avec un navigateur web.

2) Le programme décortique la requête du navigateur et renvoie, selon la cible de la
requête, une page web stockée sur le disque dur (dans un répertoire "pages" juste en
dessous du répertoire qui contient le programme du serveur web), une page web crée
dynamiquement, ou le message d'erreur (404 not found).
Pour la page dynamique, le serveur donnera une page HTML contenant les 10
derniers relevés de température, stockées dans une base de données et
accessibles via JDBC. Cette page fera un affichage graphique en vous inspirant
du code HTML donné en annexe. On prendra soin de synchroniser les méthodes
d'accès aux 10 derniers relevés afin de gérer l'accès concurrent.

3) Le serveur web doit aussi proposer une page qui permet de remettre à zéro la base de
données, après une authentification.

Voici le code que j'ai réalisé pour répondre au sujet:

Le serveur (thread)
import java.io.*;
import java.net.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class server extends Thread {

	public server(int listen_port, webserver_starter to_send_message_to) {
		message_to = to_send_message_to;
		port = listen_port;

		this.start();
	}

	private void s(String s2) { 
	}

	private webserver_starter message_to; 
	private int port; 

	
	public void run() {
		
		ServerSocket serversocket = null;

		
		try {
			
			serversocket = new ServerSocket(port);
		} catch (Exception e) { 
			System.out.println("Error1");
		}

		
		while (true) {

			try {
				
				Socket connectionsocket = serversocket.accept();

				BufferedReader input = new BufferedReader(
						new InputStreamReader(connectionsocket.getInputStream()));

				DataOutputStream output = new DataOutputStream(
						connectionsocket.getOutputStream());

				
				http_handler(input, output);
			} catch (Exception e) {
				System.out.println("Error2");
			}

		} 
	}

	
	private void http_handler(BufferedReader input, DataOutputStream output) throws IOException {

		int method = 0; 
		String http = new String(); 
		String path = new String(); 
		String file = new String(); 
		String user_agent = new String(); 

		try {
			String tmp = input.readLine(); 
			String tmp2 = new String(tmp);
			tmp.toUpperCase(); 
			if (tmp.startsWith("GET")) {
				method = 1;
			}
			if (tmp.startsWith("HEAD")) {
				method = 2;
			} 

			if (method == 0) { 
				try {
					output.writeBytes(construct_http_header(501, 0));
					output.close();
					return;
				} catch (Exception e3) {
					System.out.println("Error3");
				} 
			}

			int start = 0;
			int end = 0;
			for (int a = 0; a < tmp2.length(); a++) {
				if (tmp2.charAt(a) == ' ' && start != 0) {
					end = a;
					break;
				}
				if (tmp2.charAt(a) == ' ' && start == 0) {
					start = a;
				}
			}
			path = tmp2.substring(start + 2, end); 
		} catch (Exception e) {
			System.out.println("Error4");
		}

		FileInputStream requestedfile = null;

		try {

			requestedfile = new FileInputStream(path);
		} catch (Exception e) {
			try {
				
				output.writeBytes(construct_http_header(404, 0));
				
				output.close();
			} catch (Exception e2) {
			}
			System.out.println("404 NOT FOUND");
		} 

		try {

			output.writeBytes(construct_http_header(200, 5));

			
			if (method == 1) { 
				byte[] buffer = new byte[1024];
				while (true) {
					
					int b = requestedfile.read(buffer, 0, 1024);
					if (b == -1) {
						break; 
					}
					output.write(buffer, 0, b);
				}

			}
			output.close();
			requestedfile.close();
		}

		catch (Exception e) {

		}

		try {
			Connection con = null;
			Statement st = null;
			ResultSet rs = null;
			
			String url = "jdbc:mysql://localhost:3306/METEO";
			String user = "login";
			String password = "passwd";
			String sql = "SELECT * FROM Meteo";
			
			con = DriverManager.getConnection(url, user, password);
			st = con.createStatement();
			rs = st.executeQuery(sql);
			
				File xmlFile = new File("/home/fred/workspace/ProjetServeur/bin/meteo.html");
				FileWriter rep = new FileWriter(xmlFile);
				
				rep.write(rs.toString());
				rep.close();
		
		}
		catch (SQLException ex) { 
			 System.out.println("PB");
			 ex.printStackTrace();
		} 
		finally 
		
		{ 
		}
		
	}

	private String construct_http_header(int return_code, int file_type) {
		String s = "HTTP/1.0 ";
		
		switch (return_code) {
		case 200:
			s = s + "200 OK";
			break;
		case 400:
			s = s + "400 Bad Request";
			break;
		case 403:
			s = s + "403 Forbidden";
			break;
		case 404:
			s = s + "404 Not Found";
			break;
		case 500:
			s = s + "500 Internal Server Error";
			break;
		case 501:
			s = s + "501 Not Implemented";
			break;
		}

		s = s + "\r\n"; 
		s = s + "\r\n"; 
		return s;
	}

}


Le serveur start
public class webserver_starter{
  static Integer listen_port = null;

  
  public webserver_starter() {
    try {
      jbInit();
    }
    catch (Exception e) {
     
      System.out.println("error");
    }
  }

  
  public static void main(String[] args) {
    
    try {
      listen_port = new Integer(args[0]);
    
    }
    catch (Exception e) {
      listen_port = new Integer(80);
    }
    
    webserver_starter webserver = new webserver_starter();
  }


  private void jbInit() throws Exception {
    
    new server(listen_port.intValue(), this);
  }

}


Mon problème survient lorsque je veux traité mes requêtes sql et les affiché sur ma page html.

Je vous remercie par avance de l'intérêt que vous porterai a mon problème.

PS: Je ne suis pas un développeur dans l'âme a la base je m'oriente vers le réseaux, cette licence est pour moi un plus sur mon CV.

1 réponse

yenku Messages postés 11 Date d'inscription dimanche 4 novembre 2012 Statut Membre Dernière intervention 22 mars 2013 3
4 nov. 2012 à 18:59
UP!!!!
0