Avatar billede mikmakmuk Nybegynder
17. oktober 2001 - 08:29 Der er 9 kommentarer og
2 løsninger

fejl i servlet

Hej

Kig eventuelt på
http://mikmak.dyndns.dk:8080/mik/index/opslag.htm
fejlen kommer når man lægger en besked.
Koden nedenunder compiler fint. Tanken er i øvrigt at hver gang denne servlet bliver kørt skal der sendes en besked til mig.

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.mail.*;
import java.util.*;
import javax.mail.internet.*;

public class Tilfoj extends HttpServlet
{
        public void doPost (HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
        {
           
            response.setContentType(\"text/html\");
           
            String navn = request.getParameter (\"navn\");
            String besked = request.getParameter (\"besked\");
   
            Databaseforbindelse d = new Databaseforbindelse(\"sun.jdbc.odbc.JdbcOdbcDriver\",\"jdbc:odbc:mik\");
       
        //Mysqlforbindelse d = new Mysqlforbindelse(\"jdbc:mysql://192.168.1.11/gaestebog?user=mik&password=mik\",
            //                                            \"org.gjt.mm.mysql.Driver\");
       
        d.insertUpdate(\"INSERT INTO besked (navn,besked) VALUES (\'\"+navn+\"\',\'\"+besked+\"\')\");
        d.close();   
       
        try
        {
            Thread.sleep(2000);
        } catch (InterruptedException e){}
                   
        Properties props = System.getProperties();
       
        props.put(\"mail.smtp.host\",\"smtp.mail.dk\");
        Session session = Session.getInstance(props, null);
     
        try
        {
       
        Message m = new MimeMessage(session);
       
        m.setSubject(\"ny posting\");
        m.setText(\"Der er kommet ind ny post. Check den lige ud\");       
        Address address = new InternetAddress(\"mikbis1@mail.dk\", \"Forom info\");
        m.setFrom(address);
       
        Address toAddress = new InternetAddress(\"mikbis1@mail.dk\");
        m.addRecipient(Message.RecipientType.TO, toAddress);
        Transport trans = session.getTransport(\"smtp\");
        trans.send(m);
       
        }
       
        catch (MessagingException e)
        {
            System.out.println(\"MessagingException\");
        }
       
       
        response.sendRedirect(\"http://mikmak.dyndns.dk:8080/mik/index/opslag.htm\");
   
     
        }
       
}
Avatar billede disky Nybegynder
17. oktober 2001 - 09:11 #1
Her kan du se min mail klasse som bare virker.

Forresten har du inkluderet j2ee.jar i din servers classpath ?
Ellers kan det godt skabe problemmer.

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.mail.internet.InternetAddress;

public class SendMail
{
   
    String recipient = \"\";
    String url      =\"\";
    String sender    = \"\";
   
    public void setRecipient( String recipient )
    {
        this.recipient = recipient;
    }
   
    public String getRecipient()
    {
        return recipient;
    }
   
    public void setURL( String url )
    {
        this.url = url;
    }
   
    public String getURL()
    {
        return url;
    }
   
    public void setSender( String sender)
    {
        this.sender = sender;
    }
   
    public String getSender()
    {
        return sender;
    }
   
    public boolean sendMail()
    {
        boolean sendMail = true;
        String body = \"Din ven vil gerne sladre om denne side: \" + getURL();
        try
        {
            Properties props = new Properties();
            props.put(\"mail.smtp.host\", \"MAIL SERVER NAVN\");
           
            Session mailsession = Session.getDefaultInstance(props, null);
           
            Message msg = new MimeMessage(mailsession);
            msg.setFrom(new InternetAddress( getSender() ));
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(getRecipient() ));
            msg.setSubject( \"Tips fra en ven\" );
            msg.setText(body);
           
            Transport.send(msg);
            return true;
        }
        catch( AddressException e )
        {
            return false;
        }
        catch( MessagingException e )
        {
            return false;
        }
    }
}
Avatar billede lbhansen Nybegynder
17. oktober 2001 - 10:33 #2
eller som kommenteret fra dit forrige indlæg. Lig din mail.jar og andre jar filer fra activation frameworket, så resin kan se dem
Avatar billede disky Nybegynder
17. oktober 2001 - 10:39 #3
du kan også taget springet helt, og hente J2EE og inkludere j2ee.jar så har du det hele med.

Mail + mange andre gode ting.

Men jar filen SKAL nævnes i din CLASSPATH
Avatar billede mikmakmuk Nybegynder
17. oktober 2001 - 11:50 #4
Okay nu virker det. Jeg forstår bare ikke helt det der med CLASSPATH og .jar filen. Jeg kører w2k
Avatar billede disky Nybegynder
17. oktober 2001 - 12:03 #5
højre click på denne computer, vælg egenskaber, vælg avanceret, under miljø variabler kan du oprette en CLASSPATH som nævner den j2ee.jar fil.

CLASSPATH beskriver hvor din JVM skal lede efter dine klasser henne.
Avatar billede mikmakmuk Nybegynder
18. oktober 2001 - 10:01 #6
Jeg skal altså bare skrive

CLASSPATH=e:\\jdk1.3.1\\lib

der ligger j2ee
Avatar billede mikmakmuk Nybegynder
18. oktober 2001 - 10:06 #7
eller skal der stå set foran?
Avatar billede lbhansen Nybegynder
18. oktober 2001 - 10:30 #8
hvis du redigerer det i egenskaber, skal du ikke bruge set.

Men det er ikke nok, at du skriver /lib, medmindre alle dine klasse ligger pakket. Hvis de
fx er i .jar filer, skal du lave
CLASSPATH=e:\\jdk1.3.1\\lib\\mail.jar;e:\\jdk1.3.1\\lib\\en-anden-jar.jar

Avatar billede mikmakmuk Nybegynder
18. oktober 2001 - 11:10 #9
Jeg har en anden ting jeg sidder og roder med og ikke fatter. Jeg har en form som poster to variable til en servlet. Det er meget godt. Problemet er at jeg ikke kan finde ud af hvad de poster hvis felterne er tomme? Jeg har ikke givet dem nogle values. Jeg skriver bare

String besked = request.getParameter(\"besked\");

og det virker også fint når den altså får en værdi, ellers kikser det SQL kald jeg laver fordi besked inden værdi har.




Avatar billede lbhansen Nybegynder
18. oktober 2001 - 13:26 #10
det er fordi at den ikke bliver postet nå den er tom. Så resultatet af request.getParameter(\"besked\"); vil returnerer null,
så det skal du lige tjekke for
Avatar billede mikmakmuk Nybegynder
18. oktober 2001 - 17:09 #11
Det var også det jeg troede, men jeg kan ikke få det til at virke.

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import javax.mail.*;
import java.util.*;
import javax.mail.internet.*;

public class Tilfoj extends HttpServlet
{
        public void doPost (HttpServletRequest request,
                      HttpServletResponse response)
        throws ServletException, IOException
        {
           
            response.setContentType(\"text/html\");
           
            String navn = request.getParameter (\"navn\");   
           
            if(navn==null)
            {
                navn=\"anonym\";
            }
           
            System.out.print(navn);
           
            String besked = request.getParameter (\"besked\");
   
            Databaseforbindelse d = new Databaseforbindelse(\"sun.jdbc.odbc.JdbcOdbcDriver\",\"jdbc:odbc:mik\");
       
            //Mysqlforbindelse d = new Mysqlforbindelse(\"jdbc:mysql://192.168.1.11/gaestebog?user=mik&password=mik\",
            //                                            \"org.gjt.mm.mysql.Driver\");
       
        d.insertUpdate(\"INSERT INTO besked (navn,besked) VALUES (\'\"+navn+\"\',\'\"+besked+\"\')\");
        d.close();   
       
        try
        {
            Thread.sleep(1000);
        } catch (InterruptedException e){}
                   
        Properties props = System.getProperties();
       
        props.put(\"mail.smtp.host\",\"smtp.mail.dk\");
        Session session = Session.getInstance(props, null);
     
        try
        {
       
        Message m = new MimeMessage(session);
        m.setSubject(\"gaestebog\");
        m.setText(\"Besked fra: \"+navn);       
       
        Address address = new InternetAddress(\"mikbis1@mail.dk\", navn);
        m.setFrom(address);
        Address toAddress = new InternetAddress(\"mikbis1@mail.dk\");
        m.addRecipient(Message.RecipientType.TO, toAddress);
       
        Transport trans = session.getTransport(\"smtp\");
        trans.send(m);
       
        }
       
        catch (MessagingException e)
        {
            System.out.println(\"MessagingException\");
        }

//        catch (AddressException e){}
//        catch (NoSuchProviderException e){}
       
       
        response.sendRedirect(\"http://mikmak.dyndns.dk:8080/mik/index/opslag.htm\");
   
     
        }
       
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester