Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    14

    [jsp ] problema nel richiamo di servlet

    buongiorno a tutti! ho realizzato un sito web in jsp molto semplice che dato un questionario, non fa altro che mandare via email, attraverso l'uso di una servlet, le risposte date. Tale programma mi funziona perfettamente... il mio problema nasce dopo aver creato un account su un sito hosting di java.. ho caricato la mia applicazione web su tale sito e quando provo ad eseguirlo mi dice il seguente errore alla chiamata della servlet:

    codice:
    javax.servlet.ServletException: Wrapper cannot find servlet class servlet.Mail or a class it depends on
    secondo me è come se non trovasse la servlet all'indirizzo che gli passo nel seguente "form":

    codice:
    <form name="servlet" action="Mail" method="POST">
         
    <%
    out.println("riepilogo:\r\n");%>
    
    <%out.println("qualifica: " +qualifica+"\n");%>
    
    <%out.println("ti e' facile reperir informazioni: "+info+"\n");%>
    
    <%out.println("se no,dai motivo: "+motivo+"\n");%>
    
    <%out.println("se si, le info sono chiare?: "+why+"\n");%>
    
    <%out.println("se no, dai un suggerimento: "+suggerimento+"\n");%>
    
    <%out.println("come reperisci le info: "+come+"\n");%>
    
    <%out.println("come vorresti ripristinare il giornalino: "+giornalino+"\n");%>
    
    <%out.println("nuovi articoli proposti: "+news+"\n");%>
    
    <%out.println("ti farebbe riceverlo sulla tua email: "+like+"\n");%>
    
    <%out.println("email se si: "+email+"\n");%>
    
    <%out.println("altri suggerimenti: "+nuovo+"\n\n");%>
    
    
    <%out.println("è stata salvata una copia sul vostro desktop.\n\n");    
     
    String per = "mio.indirizzo@hotmail.it";
    String smtpServ = "smtp.live.com";
    String subject = "questionario";
    String message = "In allegato il questionario"; 
    %>
    <input type="hidden" name="per" value="<% out.print(per);%>" />
    <input type="hidden" name="from" value="<% out.print(from);%>" />
    <input type="hidden" name="smtpServ" value="<% out.print(smtpServ);%>" />
    <input type="hidden" name="subject" value="<% out.print(subject);%>" />
    <input type="hidden" name="message" value="<% out.print(message);%>" />
    
    
    
    <input type="submit" value="premi per confermare" name="ok" />
    </form>
    ho provato in tanti modi ma non riesco a capire come gli devo far trovare ed eseguire la servlet! spero che qualcuno mi possa aiutare! grazie mille in anticipo a tutti.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Non sapendo come è strutturato il tuo progetto (quali classi usa, in quali package esse siano, come vengono mappate le servlet, ecc) è praticamente impossibile darti grossi suggerimenti.

    Comincia col postare il contenuto del file web.xml: è lì che vengono dichiarate le servlet e mappate le risorse che fanno riferimento a queste.

    Altra cosa... dici che, dopo aver provato ad usare l'applicazione, qualcuno ti dice "javax.servlet.ServletException:...".

    Non hai detto "chi" ti dà quel messaggio, né "dove" lo leggi (te lo mostra nel browser? Lo trovi in un file di log?).

    Sono davvero troppo poche le informazioni che hai dato.

    (il fatto che tu abbia creato una form che si chiama "servlet", che questa richiama l'action "Mail" e che il messaggio di errore cerchi di caricare una servlet che si chiama "servlet.Mail" è alquanto bizzarro...)


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    14
    grazie per i suggerimenti... cercherò di essere più preciso... la mia pagina jsp che richiama la servlet è la seguente:

    codice:
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>JSP Page</title>
        </head>
        <body>
           
           <%@ page language="java" import="java.text.*, com.lowagie.text.*, com.lowagie.text.pdf.*, java.io.*, java.net.URL, java.net.URLConnection, java.net.URLDecoder, java.net.URLEncoder, java.util.*"%>
                
    <%
    String qualifica = request.getParameter("qualifica");
      String info = request.getParameter("info");
       String motivo = request.getParameter("motivo");
          String why = request.getParameter("why");
              String suggerimento = request.getParameter("suggerimento");
                   String come = request.getParameter("come");
              String giornalino = request.getParameter("giornalino");
              String news = request.getParameter("news");
             String like = request.getParameter("like"); 
                String email = request.getParameter("email");
                  String nuovo = request.getParameter("nuovo");
                  
     %>  
    <form name="servlet" action="Mail" method="POST">
         
    <%
    out.println("riepilogo:\r\n");%>
    
    <%out.println("qualifica: " +qualifica+"\n");%>
    
    <%out.println("ti e' facile reperir informazioni: "+info+"\n");%>
    
    <%out.println("se no,dai motivo: "+motivo+"\n");%>
    
    <%out.println("se si, le info sono chiare?: "+why+"\n");%>
    
    <%out.println("se no, dai un suggerimento: "+suggerimento+"\n");%>
    
    <%out.println("come reperisci le info: "+come+"\n");%>
    
    <%out.println("come vorresti ripristinare il giornalino: "+giornalino+"\n");%>
    
    <%out.println("nuovi articoli proposti: "+news+"\n");%>
    
    <%out.println("ti farebbe riceverlo sulla tua email: "+like+"\n");%>
    
    <%out.println("email se si: "+email+"\n");%>
    
    <%out.println("altri suggerimenti: "+nuovo+"\n\n");%>
    
    
    <%out.println("è stata salvata una copia sul vostro desktop.\n\n");    
     
    
    String from=email;
    String per = "mio.indirizzo@hotmail.it";
    String smtpServ = "smtp.live.com";
    String subject = "questionario";
    String message = "In allegato il questionario"; 
    %>
    <input type="hidden" name="per" value="<% out.print(per);%>" />
    <input type="hidden" name="from" value="<% out.print(from);%>" />
    <input type="hidden" name="smtpServ" value="<% out.print(smtpServ);%>" />
    <input type="hidden" name="subject" value="<% out.print(subject);%>" />
    <input type="hidden" name="message" value="<% out.print(message);%>" />
    
    
    
    <input type="submit" value="premi per confermare" name="ok" />
    </form>
      
        </body>
    </html>
    la servlet è la seguente:
    codice:
    package servlet;
    
    import com.lowagie.text.*;
    import com.lowagie.text.pdf.*;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.mail.*;
    import javax.mail.internet.*;
    import java.util.*;
    import java.util.Properties;
    import javax.activation.*;
    import java.io.*;
    
    public class Mail extends HttpServlet {
                
      
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
           
         
             String to=request.getParameter("per");
            String from= request.getParameter("from");
            String message=request.getParameter("message");
            String subject=request.getParameter("subject");
            String smtpServ=request.getParameter("smtpServ");
            
         
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
           
            try {
                out.println("<html>");
                out.println("<head>");
                out.println("<title>inviomail</title>");  
                out.println("</head>");
                out.println("<body>");
                            
                Properties props = System.getProperties();
                  // -- Attaching to default Session, or we could start a new one --
               
                  props.put("mail.transport.protocol", "smtp" );
                 
                  props.put("mail.smtp.starttls.enable","true" );
                 
                  props.put("mail.smtp.host",smtpServ);
                 
                  props.put("mail.smtp.auth", "true" );
                 
                
                  Authenticator auth = new SMTPAuthenticator();
                  Session session = Session.getInstance(props, auth); 
                // -- Create a new message --
                  
                  Message msg = new MimeMessage(session);
                  // -- Set the FROM and TO fields --
                  msg.setFrom(new InternetAddress(from));
                  msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
                  msg.setSubject(subject);
                  msg.setText(message);
                  // provo ad inviare allegato
                String informazione=System.getProperty("user.home");
                
               Document d = new Document();
               PdfWriter.getInstance( d,new FileOutputStream(informazione+"/Desktop/"+from+".pdf"));
                            
    d.open();
    d.add(new Paragraph("qualifica: \r\n"));
    d.add(new Paragraph("ti e' facile reperir informazioni: \r\n"));
    d.add(new Paragraph("se no,dai motivo: \r\n"));
    d.add(new Paragraph("se si, le info sono chiare?: \r\n"));
    d.add(new Paragraph("se no, dai un suggerimento: \r\n"));
    d.add(new Paragraph("come reperisci le info: \r\n"));
    d.add(new Paragraph("come vorresti ripristinare il giornalino: \r\n"));
    d.add(new Paragraph("nuovi articoli proposti: \r\n"));
    d.add(new Paragraph("ti farebbe riceverlo sulla tua email: \r\n"));
    d.add(new Paragraph("email se si: \r\n"));
    d.add(new Paragraph("altri suggerimenti:\r\n"));
    d.close();
                
                
                
                  MimeMultipart multipart = new MimeMultipart();
    FileDataSource source = new FileDataSource(informazione+"/Desktop/"+from+".pdf");
    // Create a message part to represent the body text 
    BodyPart messageBodyPart = new MimeBodyPart(); 
    messageBodyPart.setDataHandler(new DataHandler(source));
    // add the message body to the mime message 
    multipart.addBodyPart( messageBodyPart ); 
          messageBodyPart.setFileName(from+".pdf");
                msg.setContent(multipart);
                  // -- Set some other header information --
                  msg.setHeader("MyMail", "Mr. XYZ" );
                  msg.setSentDate(new Date());
                  // -- Send the message --
                  Transport.send(msg);
                 out.println("Message sent to"+to+" OK." );
    out.println("</body>");
                out.println("</html>");
              doRedirect("view.jsp", response  );
               
                
            }catch (Exception ex)
            {
              ex.printStackTrace();
             out.println("Exception "+ex);
              
            } finally {            
                out.close();
            }
         
         }
          
        private void doRedirect(String nuovaPagina, HttpServletResponse response  )
          throws IOException {
        response.sendRedirect( nuovaPagina);
      }
        
       private class SMTPAuthenticator extends javax.mail.Authenticator {
            @Override
            
            public PasswordAuthentication getPasswordAuthentication() {
                String username =  "mio.indirizzo@hotmail.it";  
                String password = "miapassw";
                return new PasswordAuthentication(username, password);
            }
      }
    il seguente è il file web.xml
    codice:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        <servlet>
            <servlet-name>Mail</servlet-name>
            <servlet-class>servlet.Mail</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>Mail</servlet-name>
            <url-pattern>/Mail</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>
                30
            </session-timeout>
        </session-config>
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
    quando provo ad eseguire questo programma sul mio pc funziona... quando provo ad eseguirlo sul web, dopo averlo caricato su questo sito di hosting java, il browser mi da il seguente errore:
    codice:
    type Status report
    
    message: Servlet Mail is not available
    
    description: The requested resource (Servlet Mail is not available) is not available.
    mentre il file di log mi dice quanto segue:
    codice:
    18-feb-2013 17.00.17 org.apache.catalina.core.StandardWrapperValve invoke
    INFO: Servlet Mail is currently unavailable
    usando netbeans, la struttura della mia applicazione è del tipo:

    codice:
    Web Pages
             + META-INF
             + WEB_INF
                       web.xml
              index.jsp
              newjsp.jsp
    Source Packages
              +servlet
                         Mail.java
    spero di essere stato più chiaro! di nuovo grazie in anticipo.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Ok, noto subito un primo errore:
    codice:
        <servlet-mapping>
            <servlet-name>Mail</servlet-name>
            <url-pattern>/Mail</url-pattern>
        </servlet-mapping>
    La riga in grassetto dovrebbe essere modificata in questo modo:
    codice:
            <url-pattern>Mail</url-pattern>
    (cioè, dovresti togliere lo slash iniziale)

    Questo perchè, molto probabilmente, la root del server NON è anche la root del tuo progetto. Di conseguenza, non la raggiungi come stai cercando di fare.


    Prova e facci sapere.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    14
    purtroppo il browser mi dice sempre lo stesso errore quando provo ad eseguirlo sul web ed inoltre non me lo fa eseguire neanche più in locale perchè mi dice

    codice:
    Error: URL Pattern must start with slash (/) or asterisks (*)
    ti ringrazio ma non credo sia questo il problema

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Ok, quindi come configurazione accetta (anzi, pretende) lo slash iniziale.
    Prova, quindi, a cambiare la JSP, in questo modo:

    codice:
    <form name="servlet" action="/Mail" method="POST">
    Cioè, aggiungendo lo slash all'action del form.

    PS: assicurati anche che nel server vengano effettivamente create le directory necessarie alle classi. Nel tuo caso, quindi, dentro la directory della tua webapp devi trovare una directory WEB-INF, all'interno della quale devi trovare una directory "servlet" e all'interno di questa il file Mail.class

    PPS: non so se il servizio di hosting che usi utilizza un application server (o un servlet container) che effettua l'esplosione del WAR.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    14
    ti ringrazio tantissimo ma purtroppo non va... ho provato a modificare l'action nel form come hai detto tu ma non funziona... secondo me perchè nel web.xml il nome è mappato come "Mail" non come "/Mail"... il file Mail.class stà a posto giusto nelle directory e il sito web di hosting mi ha assicurato, tramite email, che le servlet funzionano correttamente... a questo punto secondo me potrebbe essere un'incopaibilità con apache Tomcat che usa questo sito di hosting... grazie mille di nuovo del tuo aiuto

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da luca_18
    ti ringrazio tantissimo ma purtroppo non va... ho provato a modificare l'action nel form come hai detto tu ma non funziona... secondo me perchè nel web.xml il nome è mappato come "Mail" non come "/Mail"...
    Ma come? Mi avevi appena detto il contrario, che non ti accettava "Mail", ma voleva "/Mail".
    Metti "/Mail" anche nel web.xml.

    il file Mail.class stà a posto giusto nelle directory e il sito web di hosting mi ha assicurato, tramite email, che le servlet funzionano correttamente... a questo punto secondo me potrebbe essere un'incopaibilità con apache Tomcat che usa questo sito di hosting... grazie mille di nuovo del tuo aiuto
    Non credo si tratti di Tomcat, ma per sapere qualcosa di più bisognerebbe indagare i log.
    Più che altro... le librerie? Vedo che fai uso di JavaMail: c'è la directory "lib", dentro a "WEB-INF" con all'interno tutto il necessario?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.