Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    99

    jsp- cercafiles su server

    devo fare una jsp che dopo aver cercato dei file(.jsp) in una cartella(che risiede sul server) mi deve far sbucare la lista dei file che ha trovato sottoforma di link(cioè mettiamo che trovo pippo.jsp,devo fare in modo che sia cliccabile dall'utente e mi porti a una seconda jsp).Questa è la mia funzione CercaFiles:

    package Cercahtml;

    import java.io.File;
    import java.io.FileWriter;
    import java.io.FilenameFilter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.io.InputStreamReader;
    import java.io.BufferedReader ;
    import java.io.IOException;

    public class CercaFiles {

    //contatore usato per numerare i file ottenuti
    private static int count = 0;

    private static File to;

    private static File from;

    private static PrintWriter pw;

    private static String [] vetthtml;



    public static void main(String[] args) {
    try {
    // Input da tastiera per inserire il path dove cercare i file da modificare
    String path=new String();
    System.out.println("Inserisci il path completo dove cercare i files html da modificare: \t");

    InputStreamReader reader = new InputStreamReader (System.in);
    BufferedReader myInput = new BufferedReader (reader);
    path=myInput.readLine();

    //directory dove cercare i file con determinate estensioni
    from = new File(path);


    //nome del file da cercare. Ad esempio cerco un file di nome pippo inserirò pippo
    //se non specificato cercherà tutti i file con qualsiasi nome
    String nome = "";


    //estensione del file da cercare. Ad esempio *.mp3 inseriro .mp3
    //se non specificato cercherà tutti i files con qualsiasi estensione
    String tipo = ".jsp";



    //file che memorizzerà il risultato della ricerca
    to = new File(path+"file"+tipo+".txt");
    to.createNewFile();

    pw = new PrintWriter(new FileWriter(to), true);



    //metodo ricorsivo che esplora la directory from
    esploraFile(from, nome, tipo);

    if(count==0)
    System.out.println("Nessun file trovato");

    } catch (IOException e) {
    System.err.println("Errore");
    }
    finally{
    pw.close();
    System.out.println("Fine");
    }
    }

    public static void esploraFile(File from, String nome, String tipo) {

    //utilizziamo per la ricerca un filtro
    File[] files = from.listFiles(new Filter(nome, tipo));
    vetthtml= new String [files.length];

    //stampiamo su ogni riga i file trovati

    for (int i = 0; i < files.length; i++) {
    if (files[i].isFile()){
    //salvo nell array il path di ogni file trovato
    vetthtml[i]= files[i].getAbsolutePath();
    //questo lo uso per vedere se tutto funziona bene,mi salvo i ris in un txt per controllo
    pw.println(files[i].getName());
    //pw.println("\t\t"+files[i].getAbsolutePath());
    //System.out.println(count + " " + files[i].getName());
    //System.out.println("\t\t" + files[i].getAbsolutePath());
    System.out.println(vetthtml[i]);
    count++;
    }

    else
    esploraFile(files[i],nome,tipo);

    }

    }

    }

    class Filter implements FilenameFilter {
    //estensione del file
    private String tipo, nome;

    public Filter(String nome, String tipo) {
    this.nome = nome;
    this.tipo = tipo;
    }

    //accettiamo tutti i file con estensione s e le directory che non siano
    //nascoste
    public boolean accept(File dir, String file) {
    File f = new File(dir, file);

    //controllo sul tipo.
    //Ad esempio se cerco "pippo.txt" la indexOf(.txt) è uguale a 6 ed è uguale
    // ed è uguale a 10("pippo.txt".length()) - 4 (".txt".length)

    boolean flag1=true;
    if(tipo!=null && tipo!="")
    flag1=(file.indexOf(tipo) == file.length()-tipo.length());

    //controllo sul nome
    //flag2 è true se il file contiene la parola cercata

    boolean flag2=true;
    if(nome!=null && nome!="")
    flag2=file.toUpperCase().indexOf(nome.toUpperCase( ))!=-1;
    //ritorno i file che passano il controllo del tipo e del nome le directory

    return ( ( flag1 && flag2 ) || f.isDirectory()) && !f.isHidden();

    }
    }

    e qui il mio problema....in teoria dovrei fare una jsp con una import della classe cercafiles poi creare un'istanza di quella classe e usare la esplorafile su quell istanza e per ogni valore di vetthtml fare una <a href= <%=vetthtml[i] %>
    giusto??ora quello che nn capisco se io uso cercafiles su un det path,la ricerca è effettuata in automatico sul server?o verrebbe effettuata sul client dal momento che lancio da li la jsp?magari la domanda è stupida ma nn sono un esperto e se mi aiutate voi magari mi sento sollevato....grazie a tutti.
    comunque se faccio cosi il server di netbeans mi da errore mi aiutate a capire:

    <%@page contentType="text/html"%>
    <%@page pageEncoding="UTF-8"%>

    <%@page import="java.io.File,java.io.FileWriter,java.io.Fi lenameFilter,java.io.IOException,java.io.PrintWrit er,Cercahtml.CercaFiles "%>

    <% CercaFiles c= new CercaFiles(); %>

    <!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=UTF-8">
    <title>JSP Page</title>
    </head>
    <body>

    <h1>JSP Page</h1>
    <h2>Scegli il file html da modificare:</h2>

    <FORM method='POST' action='modifica.jsp'>
    <% c.esplorafile(); %>

    <%= c.vetthtml[0] %>


    </FORM>




    </body>
    </html>

    e questo è l errore che da il server:

    An error occurred at line: 22 in the jsp file: /index.jsp
    Generated servlet error:
    C:\Documents and Settings\F4s4n0\.netbeans\5.5\apache-tomcat-5.5.17_base\work\Catalina\localhost\paginajsp\org\ apache\jsp\index_jsp.java:71: cannot find symbol
    symbol : method esplorafile()
    location: class Cercahtml.CercaFiles
    c.esplorafile();
    ^


    An error occurred at line: 24 in the jsp file: /index.jsp
    Generated servlet error:
    C:\Documents and Settings\F4s4n0\.netbeans\5.5\apache-tomcat-5.5.17_base\work\Catalina\localhost\paginajsp\org\ apache\jsp\index_jsp.java:75: vetthtml has private access in Cercahtml.CercaFiles
    out.print( c.vetthtml[0] );
    ^
    2 errors
    f4s4n0

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Gli script server-side sono eseguiti dal server sul server.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    99
    ok un dubbio me l hai tolto...ma perchè il server mi da quell errore??cosa sbaglio???
    f4s4n0

  4. #4
    Senza entrare nel merito di quello che stai cercando di fare, gli errori sono dovuti al fatto che:

    1. Stai invocando un metodo (esplorafile()) che non esiste nella classe CercaFiles; esiste solo il metodo esploraFile(File from, String nome, String tipo), che peraltro è statico e quindi andrebbe invocato direttamente sulla classe CercaFiles e non su una sua istanza;

    2. Stai cercando di accedere al campo vetthtml, che nella classe CercaFiles è privato, e quindi non accessibile dalla jsp.

    Ciao,

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    99
    mi ero accorto di entrambi i problemi...infatti ho già cambiato il tutto in questo modo:

    public class CercaFiles {

    //contatore usato per numerare i file ottenuti
    private static int count = 0;

    public static File to;

    public static File from;

    public static PrintWriter pw;

    public static String [] vetthtml;



    public static void main(String[] args) {
    try {
    // Input da tastiera per inserire il path dove cercare i file da modificare
    //String path=new String();
    //System.out.println("Inserisci il path completo dove cercare i files html da modificare: \t");

    //InputStreamReader reader = new InputStreamReader (System.in);
    //BufferedReader myInput = new BufferedReader (reader);
    //path=myInput.readLine();
    String path= "c:/cercahtml/listafilehtml/";
    //directory dove cercare i file con determinate estensioni
    from = new File(path);


    //nome del file da cercare. Ad esempio cerco un file di nome pippo inserirò pippo
    //se non specificato cercherà tutti i file con qualsiasi nome
    //String nome = "";


    //estensione del file da cercare. Ad esempio *.mp3 inseriro .mp3
    //se non specificato cercherà tutti i files con qualsiasi estensione
    //String tipo = ".jsp";



    //file che memorizzerà il risultato della ricerca
    to = new File(path+"filejsp"+".txt");
    to.createNewFile();

    pw = new PrintWriter(new FileWriter(to), true);



    //metodo ricorsivo che esplora la directory from
    esploraFile(from);

    if(count==0)
    System.out.println("Nessun file trovato");

    } catch (IOException e) {
    System.err.println("Errore");
    }
    finally{
    pw.close();
    System.out.println("Fine");
    }
    }

    public static void esploraFile(File from) {
    String nome = "";
    String tipo= ".jsp";
    //utilizziamo per la ricerca un filtro
    File[] files = from.listFiles(new Filter(nome, tipo));
    vetthtml= new String [files.length];

    //stampiamo su ogni riga i file trovati

    for (int i = 0; i < files.length; i++) {
    if (files[i].isFile()){
    vetthtml[i]= files[i].getAbsolutePath();
    pw.println(files[i].getName());
    //pw.println("\t\t"+files[i].getAbsolutePath());
    //System.out.println(count + " " + files[i].getName());
    //System.out.println("\t\t" + files[i].getAbsolutePath());
    System.out.println(vetthtml[i]);
    count++;
    }

    else
    esploraFile(files[i]);

    }

    }

    }

    class Filter implements FilenameFilter {
    //estensione del file
    private String tipo, nome;

    public Filter(String nome, String tipo) {
    this.nome = nome;
    this.tipo = tipo;
    }

    //accettiamo tutti i file con estensione s e le directory che non siano
    //nascoste
    public boolean accept(File dir, String file) {
    File f = new File(dir, file);

    //controllo sul tipo.
    //Ad esempio se cerco "pippo.txt" la indexOf(.txt) è uguale a 6 ed è uguale
    // ed è uguale a 10("pippo.txt".length()) - 4 (".txt".length)

    boolean flag1=true;
    if(tipo!=null && tipo!="")
    flag1=(file.indexOf(tipo) == file.length()-tipo.length());

    //controllo sul nome
    //flag2 è true se il file contiene la parola cercata

    boolean flag2=true;
    if(nome!=null && nome!="")
    flag2=file.toUpperCase().indexOf(nome.toUpperCase( ))!=-1;
    //ritorno i file che passano il controllo del tipo e del nome le directory

    return ( ( flag1 && flag2 ) || f.isDirectory()) && !f.isHidden();

    }
    }

    ho tolto i parametri tipo e nome perchè se no nn me li vedeva.li ho messi fissi nella funzione esploraFile(tanto mi vanno bene fissi,cosi la ricerca me la fa solo sul path)
    mentre nella jsp:
    <FORM method='POST' action='modifica.jsp'>
    <% CercaFiles.esploraFile(c.from); %>

    <%= CercaFiles.vetthtml[0] %>


    </FORM>

    ho provato anche CercaFiles.esplora e c.vetthtml ma uguale....
    però ora tomcat dice cosi:

    type Exception report

    message

    description The server encountered an internal error () that prevented it from fulfilling this request.

    exception

    org.apache.jasper.JasperException: Exception in JSP: /index.jsp:22

    19: <h2>Scegli il file da modificare:</h2>
    20:
    21: <FORM method='POST' action='modifica.jsp'>
    22: <% CercaFiles.esploraFile(c.from); %>
    23:
    24: <%= CercaFiles.vetthtml[0] %>
    25:


    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handle JspException(JspServletWrapper.java:504)
    org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:393)
    org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
    org.netbeans.modules.web.monitor.server.MonitorFil ter.doFilter(MonitorFilter.java:368)

    root cause

    java.lang.NullPointerException
    Cercahtml.CercaFiles.esploraFile(CercaFiles.java:7 9)
    org.apache.jsp.index_jsp._jspService(index_jsp.jav a:71)
    org.apache.jasper.runtime.HttpJspBase.service(Http JspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
    org.apache.jasper.servlet.JspServletWrapper.servic e(JspServletWrapper.java:332)
    org.apache.jasper.servlet.JspServlet.serviceJspFil e(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspSe rvlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
    org.netbeans.modules.web.monitor.server.MonitorFil ter.doFilter(MonitorFilter.java:368)

    note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.

    non è che sbaglio a mettere il path dove cercare il file??
    f4s4n0

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.