Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    Impostazione proprietà e percorso servlet nel web.xml

    Ciao a tutti, MI sono appena iscritto nel forume dopo aver letto regolamento e ricercato prima di postare un thread che mi potev aiutare sono giunto ad aprire questo.
    Sto facendo un programma in Java. Ho fatto uso di una servlet per avviare tutto il programma.
    Praticamente da una pagina .jsp richiamo la servlet.
    La servlet usufruisce di alcune proprietà che ho pensato bene di dichiarare, per modificarle successivamente, nel web.xml.
    Il web.xml è questo
    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
    <web-app id="WebApp">
    
    <servlet>
    <servlet-name>PARServlet</servlet-name>		
    <display-name>PAR</display-name>		
    <servlet-class>PAR.PARServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    
    
    
    <init-param>
    <param-name>pwd_length</param-name>			
    <param-value>6</param-value>
    </init-param>
    
    
    <init-param>
    <param-name>noise</param-name>
    <param-value>yes</param-value>
    </init-param>
    
    
    <init-param>
    <param-name>noise_color</param-name>
    <param-value>166,31,255</param-value>
    </init-param>
    
    
    <init-param>
    <param-name>grid_background</param-name>
    <param-value>no</param-value>
    </init-param>
    
    
    
    
    <init-param>
    <param-name>background</param-name>
    <param-value></param-value>
    </init-param>
    
    
    
    <init-param>
    <param-name>grad_background_to</param-name>
    <param-value>255,255,255</param-value>
    </init-param>
    
    
    
    <init-param>
    <param-name>grad_background_from</param-name>
    <param-value>75,75,255</param-value>
    </init-param>
    
    
    <init-param>
    <param-name>text_creator</param-name>
    <param-value>FiveLetterFirstName</param-value>
    </init-param>
    '
    <init-param>
    <param-name>distortion</param-name>			
    	
    <param-value>WaterRipple</param-value>			
    		
    </init-param>
    
    
    <init-param>
    <param-name>font_color</param-name>
    <param-value>16,31,215</param-value>
    </init-param>
    
    <servlet-mapping>
    <servlet-name>PARServlet</servlet-name>
    <url-pattern>/PAR.jpg</url-pattern>
    </servlet-mapping>
    
    
    <welcome-file-list>
    <welcome-file>SimpleCapchaExample.jsp</welcome-file>
    </welcome-file-list>
    </web-app>
    La servlet mi parte, il problema è che l'immagine PAR.jpg che dovrebbe generare non mi presenta le proprietà che ho inizializzato nel web.xml. Ovvero non mi carica le proprietà come: noise_color, noise_font_color, text_creator etc.

    Il codice della servlet ho provato ad implementarlo in due modi, così, con l'uso di getinitParamaterNames()
    codice:
    package PAR;
    import java.io.IOException;
    import java.util.Enumeration;
    import java.util.Properties;
    
    import javax.servlet.Servlet;
    import javax.servlet.ServletConfig;
    //import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    public class PARServlet extends HttpServlet implements Servlet
    {
    	private static final long serialVersionUID = 1L;
    
    	protected final static String PAR_SESSION_KEY="PAR_SESSION_KEY";
    	//la variabile in cui verrà salvata la chiave di generazione immagine
    	
    	//le variabili che assumono i valori dal web.xml
    	protected final static String PWD_LENGTH="pwd_length";//lunghezza della pwd visualizzata
    	protected final static String NOISE="noise";//attivazione della linea di disturbo
    	protected final static String NOISE_COLOR="noise_color";//colore della linea
    	protected final static String GRID_BACKGROUND="grid_background";
    	protected final static String BACKGROUND="background";//sfondo monocolore
    	protected final static String GRAD_BACKGROUND_TO="grad_background_to";//sfondo graduato colore 1
    	protected final static String GRAD_BACKGROUND_FROM="grad_background_from";//sfondo graduato colore 2
    	protected final static String TEXT_CREATOR="text_creator";//tipo di creazione pwd 
    	protected final static String DISTORTION="distortion";//tipo di algoritmo di distorsione
    	protected final static String FONT_COLOR="font_color";//il colore della password
    	private Properties props=null;
    	private TextCreator text;//si istanzia l'oggetto che genererà la password della PAR
    	private PARProducer par;//si istanzia l'oggetto che creerà la PAR
    	
    	private String pwd;
    	
    	public void init(ServletConfig conf) throws ServletException
    	{
    		super.init(conf);
    		 
    		
    		/*props = new Properties();
    		Enumeration e = conf.getInitParameterNames();
    		while (e.hasMoreElements()) 
    		{
    			String key=(String)e.nextElement();
    			String value=conf.getInitParameter(key);
    			props.put(key,value);
    			
    		}
    		
    	}
    		
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException
    	{
    		par=new PARProducer(props);
    		//crea la password: o di tipo FiveLetterFirstName o random a seconda del param nel web.xml
    		
    		if (props.containsKey(TEXT_CREATOR))
    		{
    			text=new TextCreator(props);
    			String producer=props.getProperty(TEXT_CREATOR);
    			if (producer.equals("FiveLetterFirstName"))
    			{
    				try 
    				{
    					pwd=text.getFiveLetterFirstName();
    					
    				}catch (Exception ex) {}
    			}
    			else
    			{
    				pwd=text.getText();
    			}
    		}
    		else
    		{
    			text=new TextCreator(props);
    			pwd=text.getText();
    		}
    		request.getSession().setAttribute(PAR_SESSION_KEY,pwd);
    		//la pwd viene memorizzata nella PAR_SESSION_KEY
    	
    		par.imageCreator(response.getOutputStream(),pwd);
    	}
    	
    }
    e con l'uso di getInitParameter() in questo modo
    codice:
    package PAR;
    import java.io.IOException;
    import java.util.Enumeration;
    import java.util.Properties;
    
    import javax.servlet.Servlet;
    import javax.servlet.ServletConfig;
    //import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    public class PARServlet extends HttpServlet implements Servlet
    {
    	private static final long serialVersionUID = 1L;
    
    	protected final static String PAR_SESSION_KEY="PAR_SESSION_KEY";
    	//la variabile in cui verrà salvata la chiave di generazione immagine
    	private Properties props=null;
    	private TextCreator text;//si istanzia l'oggetto che genererà la password della PAR
    	private PARProducer par;//si istanzia l'oggetto che creerà la PAR
    	
    	private String pwd;
    	public static String text_creator;
    	static String pwd_length;
    	static String noise;
    	static String noise_color;
    	static String grid_background;
    	static String background;
    	static String grad_background_to;
    	static String grad_background_from;
    	static String distortion;
    	static String font_color;
    	public void init(ServletConfig conf) throws ServletException
    	{
    		super.init(conf);
    		 text_creator=conf.getInitParameter("text_creator"); 
    		 pwd_length=conf.getInitParameter("pwd_length");
    		 noise=conf.getInitParameter("noise");
    		 noise_color=conf.getInitParameter("noise_color");
    		 grid_background=conf.getInitParameter("grid_background");
    		 background=conf.getInitParameter("background");
    		 grad_background_to=conf.getInitParameter("grad_background_to");
    		 grad_background_from=conf.getInitParameter("grad_background_from");
    		 distortion=conf.getInitParameter("distortion");
    		 font_color=conf.getInitParameter("font_color");
    			
    		
    	}
    		
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException
    	{
    		par=new PARProducer(props);
    		//crea la password: o di tipo FiveLetterFirstName o random a seconda del param nel web.xml
    		if (text_creator!=null)
    		
    		{
    			text=new TextCreator(props);
    			String producer=props.getProperty(text_creator);
    			if (producer.equals("FiveLetterFirstName"))
    			{
    				try 
    				{
    					pwd=text.getFiveLetterFirstName();
    					
    				}catch (Exception ex) {}
    			}
    			else
    			{
    				pwd=text.getText();
    			}
    		}
    		else
    		{
    			text=new TextCreator(props);
    			pwd=text.getText();
    		}
    		request.getSession().setAttribute(PAR_SESSION_KEY,pwd);
    		//la pwd viene memorizzata nella PAR_SESSION_KEY
    	
    		par.imageCreator(response.getOutputStream(),pwd);
    	}
    	
    }
    poi ci sono altre otto classi ognuna delle quali riusa queste proprietà...


    Il problema secono me è che: o web.xml ha qualceh errore all'interno, tipo non ho inizializzato bene qualche cosa, oppure ho usato male i metodi per prendere i valori dei parametri del web.xml.
    Secondo voi?

    Grazie mille

    cyb
    Teologia: l'arte di argomentare l'inesistente per mezzo dell'insostenibile.

  2. #2
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    prova a usare dei "<context-param>" al posto degli "<init-param>"

  3. #3
    ci avevo pensato, ma siccome non mi è riuscito di trovare nessuna guida base per il web.xml non sapevo se peggioravo la situation...provo e ti faccio sapere...
    Teologia: l'arte di argomentare l'inesistente per mezzo dell'insostenibile.

  4. #4
    non cambia nulla
    i tag context-param si inizializzano similarmente all'init-param vero?

    così insomma

    codice:
    <context-param></context-param>
    altri suggerimenti?
    Teologia: l'arte di argomentare l'inesistente per mezzo dell'insostenibile.

  5. #5
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Vanno bene gli init-param

    Prova innanzitutto a controllare se i valori di tali parametri "statici" vengono correttamente letti dal servlet.

    L'"errore" puo' trovarsi anche altrove.
    Anzi... probabilmente... nella creazione dell'immagine...

  6. #6
    infatti volevo proprio vedere se venivano assegnati i valori delle proprietà alla variabili statiche.
    nella creazione dell'immagine ritengo sia tutto a posto, perchè l'immagine viene creata, soltanto nn assume alcuen proprietà.

    ti spiego, dove come nel codice seguente ci sono degli if, l'unico caso preso è quello che viene dato di default,l'ultimo insomma, questo mi spinge a pensare che il problema non sia nell'immagine ma della lettura di queste variabili.
    codice:
    if (text_creator!=null)
    		{
    			text=new TextCreator(props);
    			String producer=props.getProperty(text_creator);
    			if (producer.equals("FiveLetterFirstName"))
    			{
    				try 
    				{
    					pwd=text.getFiveLetterFirstName();
    					
    				}catch (Exception ex) {}
    			}
    			else
    			{
    				pwd=text.getText();
    			}
    		}
    		else
    		{
    			text=new TextCreator(props);
    			pwd=text.getText();
    		}
    nel caso non venissero lette e quindi memorizzate le proprietà nelle variabili statiche, il mio dubbio è: come si risolve il problema? visto che in entrambi i modi ceh ho fatto, l'imagine con le proprietà di default viene creata, la cosa mi fa pensare che entrambi i modi vanno bene, e che il problema non risiede nemmeno nel come le ho richiamate. indi per cui l'unica cosa che mi rimarrebbe da controllare sarebbequesto web.xml, ma se mi garantite che è corretto, non so dove sbattere la testa.
    non so se mi sono spiegato bene.
    Teologia: l'arte di argomentare l'inesistente per mezzo dell'insostenibile.

  7. #7
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Aspe', aspe'... non legge i parametri perche' tu (Pirl* che non sei altro !!) hai messo gli <init-param> all'esterno di <servlet> ... </servlet>


    Schiaffali dentro e le cose dovrebbero andare

    E poi dai un'occhiata anche QUA

  8. #8
    uè occhio che mi potrei offendere!!
    scherzo!
    il mio problema è che sono preso talmente dalle mille mila classi java che ho fatto il web.xml senza nozioni un po' a caso...e si vede...
    ora ci lavoro, ti faccio sapere in giornata.

    scusami, ancora non ti ho ringraziato:grazie mille, sei molto gentile e di grandissimo aiuto.
    miglior benvenuto in questa comunità non potevo averlo
    Teologia: l'arte di argomentare l'inesistente per mezzo dell'insostenibile.

  9. #9
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    No, no... non ti offendere.
    Ovviamente scherzavo...


    E' un piacere aiutare ed essere aiutati.
    In entrambi i casi si impara e non poco...



  10. #10
    qualcosa sta iniziando a funzionare...

    grazie ancora!
    appena risolvo tutto mi faccio vivo.
    non sai quanto mi hai velocizzato il lavoro...
    grazie
    Teologia: l'arte di argomentare l'inesistente per mezzo dell'insostenibile.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.