Récupérer une URL

Nikko
Récupérer une URL

Bonjour à tous,

Je réalise une web app qui sera implantée dans un intranet (outil : Ovidentia avec langage OVML). Cet intranet va envoyer à mon application une URL. Mon problème est de savoir comment récupérer une URL en java ?

Je vous remercie d'avance !
Nikko

fredericmazue

La question n'est elle pas d'abord de savoir comment l'URL est envoyée ?
Dans un mail ?
Dans un fichier ?
Dasn un fichier attaché dans un mail ?
Dans un socket ?
Dans une requête HTTP ?
Dans un message CORBA ?
Par fax sur un port série ?
Par la poste ?

Bref quand on saura comment est envoyée l'URL on saura sans doute t'aider à la récupérer.

Nikko

Salut Fredericmazue,

Je ne sais pas encore comment sera envoyée l'url. Mon tuteur (et oui, je suis en stage) m'a dit que l'intranet enverrait une url du type : http://localhost:8080/mdp=blabla&&login=identifiant/

La méthode qui permet de récupérer cette url, c'est bien HttpServletRequest.getRequestURI() ?

Merci de m'accorder du temps :wink:
Nikko

Nikko

piti up

fredericmazue

C'est que tu n'as toujours pas dis *comment* est envoyée l'URL. Tant que l'on ne sait pas ça, on ne peut pas t'aider. En tous cas pas moi.

Nikko

Alors l'URL, je la reçois par requête HTTP POST. Si tu pouvais m'aider ^^

fredericmazue

Sans doute dois tu dériver une classe de HTTPServlet et redéfinir la méthode doPost.
Celle-ci reçoit une requête en argument (HttpServletRequest je crois)
la méthode get de la requête de te permet d'avoir les paramères.
Voilà une façon de faire, pas nécessairement unique.
Tu peux aussi coder en dur en écoutant le port 80 dans un socket par exemple :)

Nikko

Merci bien Frédéric,

J'ai, en effet, redéfini ma méthode DoPost de ma classe qui joue le rôle de Controleur. Voici mon code :

public void doPost(HttpServletRequest req, HttpServletResponse rep)throws ServletException, IOException{

               try {
			ado.recupURL(req, rep);
		} catch (ClassNotFoundException e1) {
			e1.printStackTrace();
		} catch (SQLException e1) {
			e1.printStackTrace();
		}
		String invocation = req.getServletPath();
		String action = invocation.substring(1,invocation.lastIndexOf("."));
		FabriqueAction fabrique =new FabriqueAction();
		Action varAction =  fabrique.ActionFabrique(action);
		try {
			String nextPage = varAction.traiter(req, rep);		
			req.getRequestDispatcher(nextPage).forward(req, rep);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();}
	}
	
	public void doGet(HttpServletRequest req, HttpServletResponse rep) throws IOException, ServletException{
		this.doPost(req, rep);
	}

Voici la méthode recupURL qui dse trouve dans ma classe ADO :

public String recupURL(HttpServletRequest req, HttpServletResponse rep) throws ClassNotFoundException, SQLException{
		connexion();
		String page = "";
        String url = req.getRequestURI();
        String login=url.substring(22,url.lastIndexOf("/"));
       
        mdp = login.substring(4, login.lastIndexOf("&&"));
       
        int avantid = 4+mdp.length()+8;
       
        identifiant=login.substring(avantid, login.lastIndexOf(""));
       
        Statement st = conn.createStatement();
        ResultSet rs = st.executeQuery("SELECT mdp, identifiant, grp FROM login, salarie WHERE login.codesal=salarie.codesal AND mdp='"+mdp+"' AND identifiant='"+identifiant+"';");
        while(rs.next()){
            if(mdp.equals(rs.getString(1))&&identifiant.equals(rs.getString(2))&& rs.getString(3).equals("admin"))
                page = "menu_adm.jsp";
            else if(mdp.equals(rs.getString(1))&&identifiant.equals(rs.getString(2))&& rs.getString(3).equals("utilisateur"))
                page = "menu.jsp";
        }
		return page;
	}

Est-ce que tu vois une erreur ? car je ne peux pas encore tester ce code... Mon tuteur n'a pas encore mis en place l'envoie de la requête HTTP POST...

fredericmazue

Quote:
Mon tuteur n'a pas encore mis en place l'envoie de la requête HTTP POST...

Ne reste pas les deux pieds dans le même sabot. Envoie toi toi même une requëte POST depuis un navigateur. Tu bricoles une page HTML avec un formulaire et hop tu peux tester et le tour est joué.

Pour ce qui est de ton code, je ne sais pas. Essaie le d'abord. Et je ne lis jamais de code non indenté. Je suis vieux et ma tête se fatigue vite désormais. :(

Nikko

fredericmazue wrote:
Je suis vieux et ma tête se fatigue vite désormais. :(

Hihi !

Tu as raison, j'avais pas pensé à bricoler une URL ! En tout cas, je te remercie beaucoup de ton aide ;)